Java中一个类怎么实现两个接口中相同名字的抽象方法
程序员文章站
2024-02-17 17:45:22
...
看 HeadFirst Java 时,作者说,为了解决多重继承所引起的“致命方块问题”
所以我们 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中数组的定义与使用
下一篇: java学习系列 jvm必知必会