class Test {
int a, b;
Test (int i,int j)
{
a=i;
b=j;
System.out.println("a is " + a);
}
boolean equalto(Test o)
{
if (o.a == a && o.b == b)
return true;
else return false;
}
}
class PassObj {
public static void main(String[] args) {
Test ob2 = new Test(100,22);
Test ob3 = new Test(-1 ,-1);
Test ob1 = new Test(100 ,22) ;
System.out.println(ob1.equalto(ob2));
System.out.println(ob1.equalto(ob3));
}
}
上記のコードでは、条件が機能しているかどうかを知ることができます。 if文の最初のprint文についてob2.aを "a"、つまり100 == aと比較した場合オブジェクトをJavaのパラメータとして使用する
疑問があるのは、比較するために取っている "a"の値です。 printステートメントが実行される前にその "a"値を印刷しようとしましたが、オブジェクトが作成されて開始されたときに "a"の3つの値が100、-1、100として印刷されることがわかりました。
ob1。 equalto(ob2)はコンストラクタを再度呼び出しますか?もしそうなら、私の出力では、 "a"が再び印刷されるべきではありません。私はOOPの新人であり、このコンセプトでは明確ではありません。
私の疑問は、「」それはprint文1および2のために比較されたとき、それが取るとどのように私はそれらの2だけ印刷することができ、私は今取得しています「」
出力されます:
a is 100
a is -1
a is 100
true
false
オブジェクトの "a"は、オブジェクトをインスタンス化したときにコンストラクタに渡されたint値への参照です。もう一方のオブジェクトのaは、2番目のオブジェクトをインスタンス化するときにコンストラクタに渡されるintへの参照です。 ob1.equalto(ob2)はコンストラクタを再度呼び出さない。そのコンストラクタを使用するだけでそれが呼び出されます。 –
現在のオブジェクトのaと、渡されたオブジェクトoのaを比較しています。 ob1.equalto(ob2)は、ob1とob2がすでに存在し、初期化されているため、コンストラクタを呼び出しません。オブジェクトを初期化すると、単に消えることはありません。 –
OOPについてのより明確な例を知りたい場合は、属性名を持つStackOverflowAccountというクラスについてお話ししましょう。名前はCHIVIDのアカウントを作成し、Jeremy Grandという名前で別のインスタンスを取得しました。私たちの2つの口座間でequaltoを呼び出すと、あなたの口座名(CHIVID)が私の口座(Jeremy Grand)と同じであることを確認します。 –