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