2つに違いがあるかどうか疑問に思っています:
public Bee (double weight)
{
this.weight = weight;
と
public Bee (double weight)
{
weight = this.weight;
等号の「=」の左右を入れ替えると意味が変わるのですか?
はい。意味が確実に変わります。1 つは to の値を割り当て、もう 1 つはweight
toの値this.weight
を割り当てます。this.weight
weight
後者は、クラスのweight
フィールドに格納されている値を割り当て、それをweight
メソッドに渡された引数に割り当てます。
前者はその逆になります。
基本的に、メソッドの引数を参照this.weight
するクラスのweight
フィールドを参照します。メソッドのスコープに変数weight
がない場合でも、クラス フィールドを参照するために使用できます。weight
weight
はい。this
キーワードは、変数がクラス インスタンス変数であることを示します。キーワードがないthis
場合は、ローカルの重みパラメータが使用されます。
次の例では、コンストラクターに渡されたパラメーターを同じ名前のクラス インスタンス変数に割り当てます。
クラスの例:
public class Bee
{
double weight;
public Bee(double weight)
{
this.weight = weight;
}
}
はい。それらは違う。 this.weight
クラスのプロパティまたは変数をweight
参照しており、メソッドのパラメーターを参照しています。
例を見てみましょう:
public class Bee
{
private double weight;
public Bee (double weight)
{
this.weight = weight;
}
}
関数のパラメーターの重みを変更したい場合は、次のようにします。
public class Bee
{
private double weight;
public Bee (double initialWeight)
{
this.weight = initialWeight;
}
}
内部変数の重みを変更したい場合は、次のようにします。
public class Bee
{
private double internalWeight;
public Bee (double weight)
{
this.internalWeight = weight;
}
}
ご覧のとおり、どちらの変更でもここで何が起こっているかがより明確になり、各呼び出しで何が設定されているかを理解するのにも役立ちます。