2011-03-01 88 views
0

可能重复:
abstract class and anonymous class抽象类和匿名类

abstract class Two { 
    Two() { 
     System.out.println("Two()"); 
    } 
    Two(String s) { 
     System.out.println("Two(String"); 
    } 
    abstract int display(); 
} 
class One { 
    public Two two(String s) { 
     return new Two() {   
      public int display() { 
       System.out.println("display()"); 
       return 1; 
      } 
     }; 
    } 
} 
class Ajay { 
    public static void main(String ...strings){ 
     One one=new One(); 
     Two two=one.two("ajay"); 
     System.out.println(two.display()); 
    } 
} 

我们不能实例化一个抽象类,那么为什么在类中的方法二两(String s)将一个返回抽象类的一个对象两个

+1

,如果你不明白的答案,上次你问的问题,不要再增加的问题,添加注释存在的问题。 – 2011-03-01 12:53:56

+0

Opps真的非常抱歉再次发帖。在我的结尾有点混乱。我会尽量在将来小心 – 2011-03-02 05:01:16

回答

0

正如您的标题所示,方法two()创建了一个匿名类的实例,延伸Two(并实现了abstract方法display()

One实现了几乎相同的结果(除了类现在被命名)。

class One { 
    public Two two(String s) { 
     return new MyTwo(); 
    } 

    private static class MyTwo extends Two { 
     public int display() { 
      System.out.println("display()"); 
      return 1; 
     } 
    } 
} 
1

至于你的问题标题所暗示的,你实例,从两路,而不是两个本身延伸的匿名内部类。