私がaccount1.equals(account2)
を実行すると、equals()
メソッドのaccount2をサブクラス参照BankAccount compareAccount = (BankAccount)obj;
に戻して、子クラスフィールドにアクセスできるようにする必要があります。私はそれをダウンキャストすると、その後、私は私がequals()
方法でそのフィールドを使用するようにaccount1オブジェクトをダウンキャスト行う必要がありdidntは、このスクリプトではしかし、私の質問ダウンキャスティングおよびアップキャストオブジェクトとダイナミックメソッドバインディング
ためだから今compareAccount.accountAmount
を行うことができます。 Object account1 = new BankAccount(300.22, 122222)
私はそのフィールドを見ることができないだろうから、this.accountAmount
は、私がchildclassにダウンキャストされるまで動作しませんでした。 これはなぜですか、なぜアカウント1をダウンキャストする必要はありませんか?
public class BankAccountDemo
{
public static void main(String[] args)
{
Object account1 = new BankAccount(300.22, 122222);
Object account2 = new BankAccount(333.10, 23432434);
if(account1.equals(account2))
{
System.out.println("The objects are equals");
}
else
{
System.out.println("These objects are not equal");
}
}
}
Objectクラス
public class BankAccount
{
private double accountAmount;
private int accountNumber;
public BankAccount(double accountAmount, int accountNumber)
{
this.accountAmount = accountAmount;
this.accountNumber = accountNumber;
}
@Override
public boolean equals(Object obj)
{
BankAccount compareAccount = (BankAccount)obj;
boolean result;
if (this.accountAmount == compareAccount.accountAmount && this.accountNumber == compareAccount.accountNumber)
{
result = true;
}
else
{
result = false;
}
return result;
}
}
'equals'メソッドの単一パラメータのパラメータ型は何ですか? –
なぜあなたはそれらを 'オブジェクト'にしていますか? –
'this'の型は' Object'ではなく 'BankAccount'です。 –