// BankAccount クラス(抽象クラス)
abstract class BankAccount {
// メンãƒãƒ¼å¤‰æ•°
private String accountNumber;
private double balance;
// コンストラクタ
public BankAccount(String accountNumber, double initialBalance) {
this.accountNumber = accountNumber;
this.balance = initialBalance;
}
// deposit メソッドã®å®Ÿè£…
public void deposit(double amount) {
if (amount > 0) {
balance += amount;
System.out.println("Deposited: $" + amount);
} else {
System.out.println("Invalid deposit amount");
}
}
// withdraw メソッドã®å®Ÿè£…
public void withdraw(double amount) {
if (amount > 0 && amount <= balance) {
balance -= amount;
System.out.println("Withdrawn: $" + amount);
} else {
System.out.println("Invalid withdrawal amount or insufficient funds");
}
}
// 抽象メソッド(サブクラスã§å®Ÿè£…ãŒå¿…è¦ï¼‰
public abstract void printAccountInfo();
}
// SavingsAccount クラス
class SavingsAccount extends BankAccount {
// コンストラクタ
public SavingsAccount(String accountNumber, double initialBalance) {
super(accountNumber, initialBalance);
}
// addInterest メソッドã®å®Ÿè£…
public void addInterest() {
double interestRate = 0.05; // 5%ã®åˆ©æ¯ã‚’仮定
double interest = getBalance() * interestRate;
deposit(interest);
System.out.println("Interest added: $" + interest);
}
// printAccountInfo メソッドã®å®Ÿè£…
@Override
public void printAccountInfo() {
System.out.println("Savings Account: " + getAccountNumber() + ", Balance: $" + getBalance());
}
}
// CheckingAccount クラス
class CheckingAccount extends BankAccount {
// コンストラクタ
public CheckingAccount(String accountNumber, double initialBalance) {
super(accountNumber, initialBalance);
}
// applyOverdraftFee メソッドã®å®Ÿè£…
public void applyOverdraftFee() {
double overdraftFee = 20.0; // オーãƒãƒ¼ãƒ‰ãƒ©ãƒ•ト手数料を仮定
withdraw(overdraftFee);
System.out.println("Overdraft fee applied: $" + overdraftFee);
}
// printAccountInfo メソッドã®å®Ÿè£…
@Override
public void printAccountInfo() {
System.out.println("Checking Account: " + getAccountNumber() + ", Balance: $" + getBalance());
}
}
ã“ã®è§£ç”例ã§ã¯ã€BankAccount クラスãŒå£åº§ã®å…±é€šæ©Ÿèƒ½ã‚’æä¾›ã—ã€SavingsAccount クラス㨠CheckingAccount クラスãŒãれãžã‚Œæ™®é€šé 金å£åº§ã¨å½“座é 金å£åº§ã®æ©Ÿèƒ½ã‚’具体的ã«å®Ÿè£…ã—ã¦ã„ã¾ã™ã€‚サブクラスã”ã¨ã«ç•°ãªã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ãŒè¿½åŠ ã•れã€ãれãžã‚Œã®å£åº§ã®æƒ…å ±ã‚’å‡ºåŠ›ã™ã‚‹ printAccountInfo メソッドも実装ã•れã¦ã„ã¾ã™ã€‚
「018 オブジェクト指å‘ã®æ·±åŒ–ã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント