2017-05-21 9 views
1

次のコードを記述しました。クラスNestedClass2の(非静的な)メソッドm1()にアクセスできますか?静的ネストされたクラスから非静的ネストされたクラスの非静的メソッドにアクセスすることができます

別から NestedClass2.m1()を呼び出すために
class OuterClass 
{ 
    static class NestedClass 
    { 
    static class NestedClass1 
    { 
     class NestedClass2 
     { 
      void m1() 
      { 
      System.out.println("Non-static method of NestedClass2"); 
      } 
     } 
    } 
    } 
} 
+1

? –

+0

別のクラスのmainメソッド内。 –

+0

そして 'NestedClass4'(NC4)はどこですか?それはそれ自身で別のプログラムですか、それとも 'OuterClass'でもネストされていますか? –

答えて

1

、独立したクラス(この例では、私はMainからそれを呼び出す)あなたはNestedClass1NestedClass2のインスタンスを作成する必要があります。

は、以下の例では、内部クラス(new OuterClass.NestedClass.NestedClass1())のstaticインスタンスを作成する方法に対する内部クラス(nc1.new NestedClass2())のnon-staticクラスのインスタンスを作成する方法について見てみます。

public class Main { 

    public static void main(String[] args) { 
     OuterClass.NestedClass.NestedClass1 nc1 = new OuterClass.NestedClass.NestedClass1(); 
     OuterClass.NestedClass.NestedClass1.NestedClass2 nc2 = nc1.new NestedClass2(); 
     nc2.m1(); 
    } 
} 
+0

ありがとう! –

+0

ようこそ。私の答えを受け入れることを自由に感じてください(vをマークして):-) –

0

内部クラスをインスタンス化するために、我々は最初の囲み クラスをインスタンス化する必要があります。次に、この構文で外側のオブジェクト内の内側オブジェクトを作成します。

OuterClass.InnerClass innerObject = outerObject.new InnerClass();

ので、

  1. は最初NestedClass1のインスタンスを作成します。
  2. NestedClass2のインスタンスを上記の構文で作成します。あなたがそれにアクセスしたいん

    class AnyOtheClass { 
        public static void main(String args[]) 
        { 
         OuterClass.NestedClass.NestedClass1 objNestedClass1= new OuterClass.NestedClass.NestedClass1(); 
         OuterClass.NestedClass.NestedClass1.NestedClass2 objNestedClass2= objNestedClass1.new NestedClass2(); 
         objNestedClass2.m1(); 
        } 
    } 
    
関連する問題