2011-02-02 5 views
2
class X 
{ 

    void method1(){} 

    void method2(){} 

} 
class Y 
{ 

    void someMethod() 
    { 

      /* 
       What is this type below called? 
       Anonymous class or 
       Anonymous-Inherited class or what??? 
      */ 
      X xInstance = new X(){ 

       @Override 
       void method1() 
       { 
        System.out.println("What kinda class is this ?"); 
       } 
      } 
    } 

} 

答えて

4

これは匿名の内部(またはネスト)クラスです。

参考:Local and Anonymous Inner Classes

+0

あなたはクラスXから何かを継承していないと言っていますか? 。私はスーパーへのアクセス権があることがわかります(それは正しいのですか?)。オブジェクト階層に関して実際に何が起こっていますか?どのように機能するのですか?それはクラスXの匿名の子のように見えます。そうですか? – panzerschreck

+0

@panzerschreck:これはXを継承していますが、名前がないのでまだ匿名のクラスです。はい、親クラス(スーパー)にアクセスできます。階層は 'Object - > X - > YourAnonymous'です。 – jweyrich

1
X xInstance = new X(){ 

       @Override 
       void method1() 
       { 
        System.out.println("What kinda class is this ?"); 
       } 
      } 
    } 

それはanonymousクラスです。あなたは実装をオーバーライドしましたmethod1()

関連する問題