您的位置:首页 > 编程语言 > Java开发

Java中一个类怎么实现两个接口中相同名字的抽象方法

2017-08-11 11:09 1406 查看
看 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

}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐