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

声明接口和继承的深思的问题。
public class Electronic {
  public void doIt(){System.out.println("Electronic.doIt()...");}
}
abstract class Phone1 extends Electronic{

}
abstract class Phone2 extends Electronic {
public void doIt(int x){
System.out.println("Phone2.doIt(int x)...");
}
}
class Phone3 extends Electronic implements Device{
public void doStuff(){
System.out.println("Phone3.doStufff()......");
}
}
interface Device {
  public void doIt();
 }
请问这个类是怎么加载的。问为什么能编译通过?它不是违背了接口声明的编程规范?
public class PhoneTest {
public static void main(String[] args) {
Electronic ec =new Electronic();
ec.doIt();
Device p3=new Phone3();
p3.doIt();
}
}
为什么这个phone3找不到自己的方法。

------解决方案--------------------
从 Electronic继承来的doIt相当于实现了 Device接口的doIt.
------解决方案--------------------
接口中的函数都是abstract的,在实现此接口的类中应该给出这个抽象的方法的方法体来实现这个方法,否则编译器报错
------解决方案--------------------
探讨
我想清楚的问到,第一,Phone3能从Electronic得到自己的方法,来顶替实现接口。
第二:既然我实现了接口,Device p3=new Phone3(); P3。doStuff不能执行的?
以上程序,可以通过。