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

关于extends和implements创建的内部类的问题,谢谢帮忙
谢谢高手解疑,问题是这样的:
代码一:
abstract class A{
abstract public void fun1();
}
public class Outer {
public static void main(String[] args) {
class Inner implements A{ //编译器报错:此处需要接口
public void fun1(){
System.out.println("implement for fun1");
}
}
new Outer().callInner(new Inner()); //编译器报错:无法将 Outer 中的 
  //callInner(A) 应用于 (Inner)
  new Outer().callInner(new Inner());
}
public void callInner(A a){
a.fun1();
}
}
代码二:
abstract class A{
abstract public void fun1();
}
public class Outer {
public static void main(String[] args) {
class Inner extends A{
public void fun1(){
System.out.println("implement for fun1");
}
}
new Outer().callInner(new Inner());
}
public void callInner(A a){
a.fun1();
}
}
两段代码只有两处标记处(implements 和 extends)不一样,代码一报错(),代码二可以正常运行,这是为什么呢,两种方法创建的内部类有什么区别呢。 谢谢!

------解决方案--------------------
你这怎么行呢!老兄,你那都是一个粗象类,又不是接口,你怎么可去实现它呢!对它只能继承啊!
------解决方案--------------------
implements是用于实现接口时用的关键字.接口是用interface定义的.
class Inner implements A{ //A只是一个抽象类,并不是接口.类与类之间不存在implements关系