나는 수퍼 클래스 인 BankAccount (추상 정의 됨) 클래스와 SavingsAccount 및 CheckingAccount라는 두 개의 하위 클래스를 가지고 있습니다.메소드가 수퍼 클래스에 정의되어있는 경우,이를 호출하는 객체에 따라 결과를 변경하는 방법
둘 다 BankAccount에 정의 된 withdraw 메소드를 사용하지만 CheckingAccount는 초과 저장 될 수 있습니다.
내 상담자는 BankAccount의 생성자에서 우리는 다음과 같은 포함 된 경우이다 :로하여 SavingsAccount 클래스에서 호출 할 수
public BankAccount(double balanceIn, double withdrawIn)
{
balance = balanceIn;
withdraw = withdrawIn;
}
:
public SavingsAccount(double balanceIn, double withdrawIn)
{
// initialise instance variables
super (balanceIn, withdrawIn);
}
를 변경하는 방법이 어떻게 메서드는 CheckingAccount 클래스 또는 SavingsAccount 클래스에서 생성자를 호출하는지 여부에 따라 응답합니다.
예 (이것은 단지 명료하고 rea가 아닙니다. L 코드는, 그러나 방법이 있기 때문에 당신이 그것을 그래서 자식 클래스에서 슈퍼 클래스의 매개 변수를 재정의 할 수 없습니다 발견 몇 가지 조사 후 기본적으로이 작업을 수행하는 BankAccount가 클래스)
public void setWithdraw(double withdrawIn)
{
withdraw = withdrawIn;
if (withdrawIn is called from savingsAccount && balance < withdrawIn)
{
System.out.print("You have insufficient funds");
}
else
{
balance = balance - withdrawIn;
System.out.print("Funds Withdrawn");
}
}
나는이 부탁 해요 정의 이것이 어떻게 행해졌는지 궁금해했다. SavingsAccount 클래스는 고유 한 속성 등을 가지므로 명확성을 위해 그 속성을 남겨 두었습니다 (경우에 따라 궁금합니다).
CheckingAccount에 인출 방법을 넣고 SavingsAccount에 또 다른 인출 방법을 넣는 것이 훨씬 더 간단 할 것입니다. 그러나 둘 다 자금을 인출했기 때문에 수퍼 클래스에 넣을 수 있는지보고 싶었습니다.
'this instanceof SavingsAccount'와 같은 것을 시도하고 있습니까? –
부모 클래스는 자녀에 관해서는 알지 못합니다. –
왜 계정 생성자에서 돈을 인출하려고합니까? –