JavaにおけるStatic Classと静的内部クラスと非静的内部クラスの違いを深く分析する

2011 ワード

JAvaのクラスはstaticでよろしいですか?答えはいいです.Javaでは、静的インスタンス変数、静的メソッド、静的ブロックを持つことができます.クラスは静的でもよい.
JAvaでは、1つのクラスで静的クラスを定義できます.たとえば内部クラス(nested class).nested classを閉じたクラスを外部クラスと呼ぶ.Javaではstaticでトップクラス(top level class)を修飾することはできません.内部クラスのみstaticできます.
     静的内部クラスと非静的内部クラスの間にはいったい何が違うのでしょうか.次は両者の主な違いです.
    (1)内部静的クラスに外部クラスへの参照は不要である.しかし、非静的内部クラスは、外部クラスへの参照を持つ必要があります.
    (2)非静的内部クラスは、外部クラスの静的および非静的メンバーにアクセスすることができる.静的クラスは、外部クラスの非静的メンバーにアクセスできません.彼は外部クラスの静的メンバーにしかアクセスできません.
    (3)非静的内部クラスは外部クラスエンティティから離れることができず、非静的内部クラスは外部クラスのデータと方法にアクセスすることができる.彼は外部クラスの中にいるからである.
上記の議論に基づいて,これらの特性によりプログラミングをより簡単で効率的にすることができる.

/*          java                */
class OuterClass{
  private static String msg = "GeeksForGeeks";
  //      
  public static class NestedStaticClass{
    //                  
    public void printMessage() {
     //    msg      ,         
     System.out.println("Message from nested static class: " + msg); 
    }
  }
  //       
  public class InnerClass{
    //                            
    public void display(){
     System.out.println("Message from non-static nested class: "+ msg);
    }
  }
} 
class Main
{
  //                    
  public static void main(String args[]){
    //           
    OuterClass.NestedStaticClass printer = new OuterClass.NestedStaticClass();
    //              
    printer.printMessage();  
    //           ,          
    OuterClass outer = new OuterClass();    
    OuterClass.InnerClass inner = outer.new InnerClass();
    //               
    inner.display();
    //            ,          
    OuterClass.InnerClass innerObject = new OuterClass().new InnerClass();
    //                
    innerObject.display();
  }
}

以上、JavaのStatic Classに関する資料を紹介しましたが、javaのstatic classを学ぶのに役立つことを願っています.