是的,按照LZ的想法,如果父类的方法和接口的方法声明完全一样,那么继承父类之后,相当于父类代替子类对象覆写了接口的方法。但是当二者方法名一致,参数列表不同时,相当于方法重载。测试代码:
class B{
public void methdB(){
System.out.println("class b");
}
}
interface C{
int methdB(int x);//编译不通过
//void methdB();//可通过编译
}
class A extends B implements C{
//(1)方法声明完全相同时,子类对象从父类那里继承了方法,相当于已经覆写了接口的方法
//(2)函数名相同,参数名不同时相当于重载
public int methdB(int x) {
// TODO Auto-generated method stub
return x;
}
}
public class Main {
public static void main(String[] args) {
A a=new A();
a.methdB();
System.out.println(a.methdB(1));
}
}
1.首先C是接口,那么C中的方法全是抽象的,B是非抽象类,B中方法全是非抽象了(有一个方法为抽象,本类为抽象类)。那么B中不可能有C中的方法。
2.其次你想表达的应该是 A extends B implements C,D 这里的C,D是抽象类而不是接口。 那么C中就有可能和B中有同样的非抽象方法了。
3.最后回答你想问的问题。既然这个非抽象方法在B类和C类中都有,那么你new的子类对象肯定具备这种方法,当然可以直接拿来用。不用复写。