interface Aable{
public void doSomething();
}
interface Bable{
public void doSomething();
}interface ABable extends Aable,Bable{
}
大家讨论一下,如果一个类implements ABable这个接口...
会遇到什么奇怪的事情..还有一种状况是一个类继承一个抽象类和实现一个接口,也存在同名的方法..这个问题在实际开发中估计不常见,纯粹是出于爱好才讨论的..
有大牛出来说说原理吗?
(1)假设方法是实现的抽象类的,那么接口中的抽象方法就没有实现,此时编译器会报错。
(2)假设方法是实现的接口中的方法,那么抽象类中的抽象方法没有实现,编译器同样会报错。
但是在编译的过程中,并没有报错,所以排除上面的两种情况,得出一个结论,方法既是父类的,也是接口的。
会遇到什么奇怪的事情..”这个 可以这样吧 :interface Aable{
public void doSomething();
}
interface Bable{
public void doSomething();
}实现类: class AB implements Aable{
Bable getBable(){
return new Bable(); }}“有一种状况是一个类继承一个抽象类和实现一个接口,也存在同名的方法..”interface Aable{
public void doSomething();
}
abstract class Bable{
public void doSomething();
}public class Cable implements Aable{ public void doSomething() {
System.out.println("aaaaaaaaaa");
}
Bable getBable(){
return new Bable(){
public void doSomething() {
System.out.println("bbbbb");
}
};
}
}
这个肯定没问题
我说这个很奇怪而已..没说这样编译有问题我自己的测试结果是:
如果有两个同名的方法,只需要实现这个方法.
不管是用哪个接口的引用,都可以使用这个方法.
这个play()实现了,用Aable或Bable的引用都可以使用这个方法