JAVAの静的クラス

1621 ワード

JAVAの静的クラスといえばstaticという修飾子で、静的メンバー変数とメンバー関数(クラスのメソッド)の修飾子としてstaticを説明していますが、2つの字が「メンバー」であることに注意してください.クラスのすべてのインスタンスに共有されることを意味します.すなわち、クラスのインスタンスが静的メンバー変数を変更した場合、その変更値はクラスの他のすべてのインスタンスに表示されます.つまり静的変数はコピーが1つしかありません!ここで明らかに、クラスがstaticとして定義されている場合、このクラスは静的内部クラスである可能性があります.最も簡単な例:IDEで任意にクラスを定義し、メイン関数を追加することを選択します.自動的に生成されるメイン関数は静的内部クラスです.静的内部クラスではないクラスを定義できますか?答えはできない!コンパイラはエラーを報告します.
非静的内部クラスと静的内部クラスの使用方法私自身もDemoを書いているうちに徐々にこの2種類の使い方の違いに気づきました.1.通常の内部クラスを初期化し、このクラスのオブジェクトを直接newし、そのオブジェクトを介して呼び出されるメンバー関数
public class Lianbiaotest {

	public static void main(String[] args) {
		//               ,        ,  new        ,               。
		Lianbiaotest a = new Lianbiaotest();
		a.Creat_linklistHead();
		//Creat_linklistHead();
	}	
		public LNode Creat_linklistHead() {
		LNode head = null;
		System.out.println("      ,     , 0  ");
		String newData;
		Scanner scanner = new Scanner(System.in);
		while (!(newData = scanner.next()).equals("0")) {
			LNode newLNode = new LNode();
			newLNode.setData(newData);
			newLNode.setNext(head);
			head = newLNode;
		}
		System.out.println("    ");
		return head;
	}
}

2.では、new Lianbiaotestというクラスのオブジェクトを直接Creat_を呼び出さないことができますか?linklistHead()というメンバー関数、またはLianbiaotestによって呼び出されますか?答えはだめだ!このように使うにはCreatを修正する必要がありますlinklistHead()関数は静的関数です.静的メソッドにはオブジェクトが必要ないため、クラス名呼び出しを使用できます.3.Creat_linklistHead()関数が静的関数である場合、この関数(メソッド)を呼び出すときに3つの方法があります.直接呼び出すと、何も付けません.このクラスで直接呼び出す.newオブジェクトで呼び出されますが、The static method Creat_という警告があります.linklistHead()from the type Lianbiaotest should be accessed in a static way、newは明らかに静的入口ではないからです.