2017-08-12 3 views
1

Test1 & Test2は同じパッケージで、なぜ私はインポートtest2が必要ですか?Test1とTest2は同じパッケージになっていますが、どうして私はtest2をインポートする必要がありますか?私がインポートを使用しない場合、インinn1 = test2.newイン(4)、それは間違って行くでしょう

インポートを使用しない場合、Inn1 = test2.new Inn(4)、間違っています。 & &他の質問:

public void show(final int number){ 

} 

私はここに、最終的な使用している場合は、何この意味は?

package info; 
    import info.Test2.Inn; 

    public class Test1 { 
     public static void main(String[] args) { 
      int sum = 1; 
      Test2 test2 = new Test2(2); 
      Test2.Inn inn = test2.new Inn(3); 
      Inn inn1 = test2.new Inn(4); 
      for (int i = 0; i < 9; i++){ 
       sum = (sum + 1) * 2; 
      } 
      System.out.println(sum); 
     } 
    } 
    class Test2 { 
     private int test; 

     public Test2(int test) { 
      this.test = test; 
     } 


     class Inn{ 
      private int inn; 

      public Inn(int inn) { 
       this.inn = inn; 
      } 

     } 
    } 
+0

内部クラスのメンバーは内部クラスのスコープ内でのみ認識され、外部クラスでは使用できません。 Test2クラス以外のコードがクラスInnをインスタンス化しようとすると、Javaコンパイラによってエラーメッセージが生成されます。一般化すると、ネストされたクラスは、他のプログラム要素と変わることはありません。囲みスコープ内でのみ認識されます。最終的なメソッドを追加したいクラスを記述してください。 – Tehmina

+0

Test2.Inn inn1 = test2.new Inn(4)を使用します。 – tommybee

答えて

0

同じパッケージでは、パッケージ名のみを省略できます。

全体署名:

package_name.Test2.Inn 
package_name.Test2 

- >

Test2.Inn 
Test2 

使用Inn代わりに名前Innと同じパッケージ内のクラスがある場合はどうすればTest2.Inn

の場合は?


メソッドシグネチャにfinalnumberが変更できないことを意味します。

number++のようなものは、このメソッドでは使用できません。

0

Test2.Inn INN1 = test2.newイン(4)を次のようにインポート文を削除することができます。

ので、全体のコードは

public class Test1 { 
    public static void main(String[] args) { 
     int sum = 1; 
     Test2 test2 = new Test2(2); 
     Test2.Inn inn = test2.new Inn(3); 
     Test2.Inn inn1 = test2.new Inn(4); 

     for (int i = 0; i < 9; i++){ 
      sum = (sum + 1) * 2; 
     } 
     System.out.println(sum); 
    } 


} 

class Test2 { 
    private int test; 

    public Test2(int test) { 
     this.test = test; 
    } 


    class Inn{ 
     private int inn; 

     public Inn(int inn) { 
      this.inn = inn; 
     } 

    } 
} 

は私があなたに

がTest1のクラス

public class Test1 { 
    public static void main(String[] args) { 
     int sum = 1; 
     Test2 test2 = new Test2(2); 
     Test2.Inn inn = test2.new Inn(3); 
     Test2.Inn inn1 = test2.new Inn(4); 

     for (int i = 0; i < 9; i++){ 
      sum = (sum + 1) * 2; 
     } 
     System.out.println(sum); 
    } 

    class Test2 { 
     private int test; 

     public Test2(int test) { 
      this.test = test; 
     } 


     class Inn{ 
      private int inn; 

      public Inn(int inn) { 
       this.inn = inn; 
      } 

     } 
    } 
} 

のTest2を内部クラスを作成し、他の場合でも、コードウォンをお見せしましょう、ルックスかもしれませんTest1クラスの静的メソッドでTest2クラスにアクセスできないため、まだコンパイルできません。

だから、あなたは今、この

静的クラスTest2を

を行うことができ、あなたはTest2.Inn

public class Test1 { 
    public static void main(String[] args) { 
     int sum = 1; 
     Test2 test2 = new Test2(2); 
     Test2.Inn inn = test2.new Inn(3); 
     Test2.Inn inn1 = test2.new Inn(4); 

     for (int i = 0; i < 9; i++){ 
      sum = (sum + 1) * 2; 
     } 
     System.out.println(sum); 
    } 

    static class Test2 { 
     private int test; 

     public Test2(int test) { 
      this.test = test; 
     } 


     class Inn{ 
      private int inn; 

      public Inn(int inn) { 
       this.inn = inn; 
      } 

     } 
    }  
} 
を宣言することにより、Test1を、その内部クラスインの静的メンバーにTest2クラスにアクセスすることができます

次に、上記のコードは少し醜いので、私は最終的に自分のコードを作ることができます

import Test1.Test2.Inn; 

public class Test1 { 
    public static void main(String[] args) { 
     int sum = 1; 
     Test2 test2 = new Test2(2); 
     Inn inn = new Inn(3); 
     Inn inn1 = new Inn(4); 

     for (int i = 0; i < 9; i++){ 
      sum = (sum + 1) * 2; 
     } 
     System.out.println(sum); 
    } 

    static class Test2 { 
     private int test; 

     public Test2(int test) { 
      this.test = test; 
     } 


     static class Inn{ 
      private int inn; 

      public Inn(int inn) { 
       this.inn = inn; 
      } 

     } 
    }  
} 

私はそれがクラスのスコープまたはアクセシビリティに関するすべてだと思います。

関連する問題