// 抽象クラス BankAccount
abstract class BankAccount {
private double balance;
// コンストラクタ
public BankAccount(double initialBalance) {
this.balance = initialBalance;
}
// withdraw メソッド
public abstract void withdraw(double amount);
// getBalance メソッド
public double getBalance() {
return balance;
}
}
// SavingsAccount クラス
class SavingsAccount extends BankAccount {
private double interestRate;
// コンストラクタ
public SavingsAccount(double initialBalance, double interestRate) {
super(initialBalance);
this.interestRate = interestRate;
}
// withdraw メソッドã®ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰
@Override
public void withdraw(double amount) {
// 特有ã®å‡¦ç†ï¼ˆä¾‹: 手数料を引ã„ã¦ã‹ã‚‰å¼•ã出ã—)
double fee = 0.5;
double totalAmount = amount + fee;
if (totalAmount <= getBalance()) {
// 引ã出ã—å¯èƒ½ãªå ´åˆ
super.withdraw(totalAmount);
} else {
System.out.println("Insufficient funds!");
}
}
}
// CheckingAccount クラス
class CheckingAccount extends BankAccount {
private double overdraftLimit;
// コンストラクタ
public CheckingAccount(double initialBalance, double overdraftLimit) {
super(initialBalance);
this.overdraftLimit = overdraftLimit;
}
// withdraw メソッドã®ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰
@Override
public void withdraw(double amount) {
// 特有ã®å‡¦ç†ï¼ˆä¾‹: オーãƒãƒ¼ãƒ‰ãƒ©ãƒ•トã®ç¯„囲内ã§å¼•ã出ã—)
if (amount <= getBalance() + overdraftLimit) {
// 引ã出ã—å¯èƒ½ãªå ´åˆ
super.withdraw(amount);
} else {
System.out.println("Insufficient funds!");
}
}
}
// Main クラス
public class Main {
public static void main(String[] args) {
// ç•°ãªã‚‹ç¨®é¡žã®éŠ€è¡Œå£åº§ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’生æˆ
SavingsAccount savingsAccount = new SavingsAccount(1000, 0.02);
CheckingAccount checkingAccount = new CheckingAccount(500, 200);
// 引ã出ã—を行ã„ã€çµæžœã‚’表示
System.out.println("Initial Savings Account Balance: " + savingsAccount.getBalance());
savingsAccount.withdraw(50);
System.out.println("Savings Account Balance after Withdrawal: " + savingsAccount.getBalance());
System.out.println("\nInitial Checking Account Balance: " + checkingAccount.getBalance());
checkingAccount.withdraw(700);
System.out.println("Checking Account Balance after Withdrawal: " + checkingAccount.getBalance());
}
}
ã“ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã§ã¯ã€BankAccount クラスを抽象クラスã¨ã—ã¦ã€SavingsAccount クラス㨠CheckingAccount クラスãŒãれを継承ã—㦠withdraw メソッドをオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã—ã¦ã„ã¾ã™ã€‚main メソッドã§ã¯ã€ç•°ãªã‚‹ç¨®é¡žã®éŠ€è¡Œå£åº§ã‹ã‚‰å¼•ã出ã—を行ã„ã€çµæžœã‚’表示ã—ã¦ã„ã¾ã™ã€‚
「018 オブジェクト指å‘ã®æ·±åŒ–ã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント