Javaにおける静的メソッド,非静的メソッド,静的変数,非静的変数の4つの関係

3154 ワード

Java学習ノートの静的メソッド,非静的メソッド,静的変数,非静的変数の4つの関係
まず、このいくつかの名詞の意味を理解します.
  • 静的メソッド:クラスメソッド、クラス内でstaticキーワードで明示されるメソッド.使用方法:クラス名を直接使用します.クラスメソッド名を呼び出します.
  • 非静的メソッド:すなわち、staticキーワードが明記されていないメンバーメソッド.使用方法:クラスオブジェクトを作成し、クラスオブジェクト名を使用する必要があります.メンバーメソッド名を呼び出します.
  • 静的変数:すなわち、クラス変数、クラス内、メソッドの外にstaticキーワードで明示された変数であり、あるオブジェクトの所有ではなく、クラス全体の所有、すなわちクラスのすべてのオブジェクトによって共有される.使用方法:クラス名を直接使用します.クラス変数名でアクセスします.
  • 非静的変数:すなわちメンバー変数であり、クラス内、メソッド以外にstaticキーワードの宣言はありません.使用方法:クラスオブジェクトを作成し、クラスオブジェクト名を使用する必要があります.メンバー変数名を呼び出します.

  • この4つの関係
  • 静的メソッドでは、クラス内の静的メンバーを直接呼び出すことができますが、非静的メンバーを直接呼び出すことはできません.
  • public class Test {
        String name = "Hello";//     
        static String hobby = "World";//    
        
        //                  
        public static void print() {
        	//System.out.println(name);//   
        	System.out.println(hobby);
        }
    }
    
  • 静的メソッドで非静的変数を呼び出すと、クラスのオブジェクトを作成し、オブジェクトを介して非静的変数
  • にアクセスできます.
    public class Test {
        String name = "Hello";//     
        static String hobby = "World";//    
        
        //                  
        public static void print() {
        	Test test1=new Test();//     
        	System.out.println(test1.name);//                    
        	System.out.println(hobby);
       	}
    }
    
  • 通常のメンバーメソッドでは、クラスの非静的変数および静的変数
  • に直接アクセスできます.
    public class Test {
        String name = "Hello";//     
        static String hobby = "World";//    
        
        //        ,                   
        public  void print() {
        	System.out.println(name);
        	System.out.println(hobby);
        }
    }
    
  • 静的方法ではクラス名を用いることができる.静的メソッド名は呼び出すが、非静的メソッドを直接呼び出すことはできず、オブジェクトを介して非静的メソッド
  • にアクセスする必要がある.
    public class Test {
        //      
        public void test(){
            System.out.println("       test!");
            //Test.sayHello("Test");//          
        }
        //    2
        public static void test2(){
            System.out.println("      test2!");
        }
        //                  
        public static void test3(){
            System.out.println("      test3!");
            Test.test2();
            Test testA=new Test();
            testA.test();
        }
        
        public static void main(String[] args) {
        	Test.test3();
        }
    }
    /**
     * output:
     *      test3!
     *      test2!
     *       test!
    */
    

    5.非静的方法ではクラス名を用いることができる.静的メソッド名で呼び出されますが、非静的メソッドを直接呼び出すことはできません.オブジェクトから非静的メソッドにアクセスする必要があります.
    public class Test {
        //                    
        public void test(){
            System.out.println("       test!");
            Test testA=new Test();
            testA.test2();
            Test.test3();//          
        }
        //     2
        public  void test2(){
            System.out.println("       test2!");
        }
        //    3
        public static void test3(){
            System.out.println("      test3!");
        }
    
        public static void main(String[] args) {
            //      main          
        	Test testA=new Test();
            testA.test();
        }
    }
    /**
     * output:
     *       test!
     *       test2!
     *      test3!
    */
    

    以上、私がJavaを勉強している間に気絶しやすいと思った場所をまとめましたので、何か間違っているところがあればご指摘ください.