日期:2014-05-20  浏览次数:20811 次

接口与抽象类的问题
本帖最后由 zhhh4250 于 2012-12-27 19:16:08 编辑
abstract class A
{
private String name;
public  A(String name){
this.name = name;
}
public String getName(){
return this.name;
}
public abstract void fun();
}

interface  B
{
String NAME = "hello b";
public void bFun();
public void bFun1();
public void fun();}

class C extends A implements B
{
public C(String name){
super(name);
}
public void fun(){
System.out.println("hellofun");
}
public void bFun(){
System.out.println("hellobFun");
}
public void bFun1(){
System.out.println("hellobFun1");
}

}


上诉3个类中C继承抽象类A并实现了接口类B,问题是接口类B与A类中间有一个相同的方法名。我能不能理解为C类即实现了接口B的方法又覆盖了A类的抽象方法

。。。应当怎么样理解。。。谢谢了。。。。故意这么写的,没想到通过编译了。。。
------解决方案--------------------
C应该只能覆盖B的方法,A中的方法属于抽象方法,不能这样覆盖吧
------解决方案--------------------
写个测试用例就知道了,new 一个C对象先转换为A类型,然后调用fun()
再强制转换为B接口,然后调用fun
理论上来说,就像你说的两个都实现了
------解决方案--------------------
个人感觉是抽象类先A实现接口B.最后,C覆写A.