2011-03-01 91 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

至於你的問題標題所暗示的,你實例,從兩路,而不是兩個本身延伸的匿名內部類。