クラス インスタンス (例: static/final で宣言された変数) と静的メソッド (例: クラス メソッド) の間に特定の関係はありますか?
私の言いたいことを理解していただければ幸いです。
クラス インスタンス (例: static/final で宣言された変数) と静的メソッド (例: クラス メソッド) の間に特定の関係はありますか?
私の言いたいことを理解していただければ幸いです。
あなたが話しているのは、クラスインスタンスではなく静的変数だと思います(この用語はありません)。静的変数と静的メソッドの間の1つの関連付けは、静的メソッドではインスタンス変数ではなく静的変数にしかアクセスできないということです。
静的メソッドと非静的メソッド/クラスはまったく別物です。オブジェクト指向プログラミングの例を使用してみましょう。"Person" というクラスがあり、コンストラクターPerson()
が 、インスタンス変数が myAge (0 に設定) として宣言され、メソッドが と呼ばれているとしBirthday()
ます。
int myAge;
public Person(){
myAge = 0;
}
public void Birthday(){
myAge += 1;
}
私のmain
方法では、このクラスは次のように使用されます。
Person Sajjad = new Person();
Sajjad.Birthday();
あなたという新しい人物を作成すると、コンストラクターのデフォルト値が 0 であるため、あなたの年齢は 0 になりますmyAge
。この方法を適用するBirthday()
と、年齢が 1 つ上がります。
メソッドに関してはstatic
、オブジェクト指向の原則はありません。それには用途があります..私は通常、簡単な計算に使用します。
public static double addValues(double a, double b){
return a + b;
}
私の中でmain
:
int sum;
sum = addValues(1, 2);
System.out.println(sum);
出力:
3
上記のように、新しいオブジェクトを宣言する必要がないことがわかりますか? 静的メソッドはプロトタイプを作成するのが簡単ですが、長い目で見れば、長期的にはコードの保守が非常に簡単になるため、オブジェクト指向の原則を使用することは間違いありません。また、不要なコード行でメイン メソッドを乱雑にする必要もありません。
PSコードが間違っている場合、それは実際には私が作成した疑似コードにすぎません。
クラス インスタンスは、メモリに格納され、クラスの Type の変数を介して参照されるオブジェクトです。各要素には独自の状態と独自のメソッドがあります。例:Apple
クラスとgetColor
非静的要素がある場合:
Apple a = new Apple("green");
Apple b = new Apple("red");
a.getColor();//green
b.getColor();//red
静的メソッド/変数は、そのクラスに関連する要素であり、クラスの名前を介してアクセスされます。インスタンスから静的要素にアクセスすることはできません。例:Apple
クラスとsize
静的要素がある場合:
Apple.tree; //Apple Tree
これがクラスAppleです
class Apple {
public static String tree = "Apple Tree"; // Class related
private String color; //object instance related
public Apple(String color) {
this.color = color;
}
public String getColor() {
return this.color;
}
}
したがって、このクラスの色はインスタンスによって異なります。