Java中一个类怎么实现两个接口中相同名字的抽象方法
2017-08-11 11:09
1406 查看
看 HeadFirst Java 时,作者说,为了解决多重继承所引起的“致命方块问题”
所以我们 Java 不用多重继承,用多重实现,but,如果实现了两个接口中,有相同名字的抽象方法,那不还是避免不了所谓的“致命方块”吗?
Friend 接口:
Pet 接口:
Dog 类实现了 Friend 和 Pet 接口:
两个接口中的抽象方法的名字相同了,编译器怎么知道实现的是哪一个?2333333
答案是无解。c# 中可以实现两个接口中的相同方法,并且可以清晰的调用它们两个方法,但 Java 不能。
所以最好还是避免这种写法,Java 自带的接口不会出现这种问题,自己定义的接口要注意。如果非要解决这个的话,只有一种方法,用内部类:
参考:http://bbs.csdn.net/topics/320080255
所以我们 Java 不用多重继承,用多重实现,but,如果实现了两个接口中,有相同名字的抽象方法,那不还是避免不了所谓的“致命方块”吗?
Friend 接口:
public interface Friend { public abstract void play() ; public abstract void beFriendly(); }
Pet 接口:
public interface Pet { public abstract void play() ; public abstract void beFriendly(); }
Dog 类实现了 Friend 和 Pet 接口:
public class Dog implements Pet, Friend { @Override public void play() { // TODO Auto-generated method stub } @Override public void beFriendly() { // TODO Auto-generated method stub } }
两个接口中的抽象方法的名字相同了,编译器怎么知道实现的是哪一个?2333333
答案是无解。c# 中可以实现两个接口中的相同方法,并且可以清晰的调用它们两个方法,但 Java 不能。
所以最好还是避免这种写法,Java 自带的接口不会出现这种问题,自己定义的接口要注意。如果非要解决这个的话,只有一种方法,用内部类:
参考:http://bbs.csdn.net/topics/320080255
public class Dog implements Friend { @Override public void play() { // TODO Auto-generated method stub } @Override public void beFriendly() { // TODO Auto-generated method stub } public class MultiDog implements Pet{ @Override public void play() { // TODO Auto-generated method stub } @Override public void beFriendly() { // TODO Auto-generated method stub } } }
相关文章推荐
- Java类实现含有相同方法签名的两个接口
- 14. JAVA 枚举(Enum、类集EnumMap&EnumSet 、实现接口、定义抽象方法) ----- 学习笔记
- 类继承多个接口有相同的方法时,怎么办?(接口显式实现的作用)
- Java中接口的定义与实现接口抽象方法
- Java小程序---接口中抽象方法的实现(解决了JAVA语言不能多继承的问题)
- Java中接口的定义与实现接口抽象方法
- 一个类所实现的两个不同的接口中,有同名的方法,怎么知道实现的是哪个接口中的方法
- java中的继承问题,类B继承A,那么构造方法需要这样写吗?这不是重复吗?还有接口与抽象类怎么实现?
- java中的实现接口和含有抽象方法的枚举类
- Java中接口的定义与实现接口抽象方法
- java中子类继承父类和实现接口有同名方法怎么处理
- Java子类的父类和要实现的接口有相同的方法/函数会冲突吗
- Java中接口定义及实现接口的抽象方法
- java中抽象类、抽象方法、接口与实现接口实例详解
- java包 + 接口的定义与实现接口抽象方法 + 并发视频
- 如何实现两个接口中的两个名称相同的方法?
- java--类继承和实现的接口中含有相同的方法
- C#类、接口、虚方法和抽象方法-抽象类和接口的相同点和区别
- 用JAVA实现一种排序,JAVA类实现序列化的方法(二种)? 如在COLLECTION框架中,实现比较要实现什么样的接口?
- java中由类名和方法名字符串实现其调用