面向对象(中) 实验 类的继承,super

1 、写一个名为 Account 的类模拟账户。该类的属性和方法如下图所示。该类包括的属性:
账号 id ,余额 balance ,年利率 annualInterestRate ;包含的方法:访问器方法( getter
setter 方法),返回月利率的方法 getMonthlyInterest() ,取款方法 withdraw() ,存款方法
deposit()
面向对象(中) 实验 类的继承,super_第1张图片
写一个用户程序测试 Account 类。在用户程序中,创建一个账号为 1122 、余额为 20000
年利率 4.5% Account 对象。使用 withdraw 方法提款 30000 元,并打印余额。
再使用 withdraw 方法提款 2500 元,使用 deposit 方法存款 3000 元,然后打印余额和月利
率。
面向对象(中) 实验 类的继承,super_第2张图片
 
2 、创建 Account 类的一个子类 CheckAccount 代表可透支的账户,该账户中定义一个属性
overdraft 代表可透支限额。在 CheckAccount 类中重写 withdraw 方法,其算法如下:
如果(取款金额 < 账户余额),
可直接取款
如果(取款金额 > 账户余额),
计算需要透支的额度
判断可透支额 overdraft 是否足够支付本次透支需要,如果可以
将账户余额修改为 0 ,冲减可透支金额
如果不可以
提示用户超过可透支额的限额

 

要求: 写一个用户程序测试 CheckAccount 类。在用户程序中,创建一个账号为 1122 、余
额为 20000 、年利率 4.5% ,可透支限额为 5000 元的 CheckAccount 对象。
使用 withdraw 方法提款 5000 元,并打印账户余额和可透支额。
再使用 withdraw 方法提款 18000 元,并打印账户余额和可透支额。
再使用 withdraw 方法提款 3000 元,并打印账户余额和可透支额。
提示:
1 ) 子类 CheckAccount 的构造方法需要将从父类继承的 3 个属性和子类自己的属性全
部初始化。
2 ) 父类 Account 的属性 balance 被设置为 private ,但在子类 CheckAccount withdraw
方法中需要修改它的值,因此应修改父类的 balance 属性,定义其为 protected
面向对象(中) 实验 类的继承,super_第3张图片
 
答:
import java.util.Scanner;
public class Customer {
    private String firstName;
    private String lastName;
    private Account account;

    public Customer(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

    public String getFirstName() {
        return firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public Account getAccount() {
        return account;
    }

    public void setAccount(Account account) {
        this.account = account;
    }

    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        Customer c=new Customer("Jane","Smith");
        c.account=new CheckAccount(1122,20000,0.045,5000);

        c.account.withdraw(5000);
        c.account.withdraw(18000);
        c.account.withdraw(3000);
    }

}

class CheckAccount extends Account{
    private int overdraft;

    public CheckAccount(int id, double balance, double annualInterestRate,int overdraft) {
        super(id, balance, annualInterestRate);
        this.overdraft = overdraft;
    }
    public void withdraw(double amount){
        if (balance-amount<=0){
            if (amount-balance
取款5000.0成功!
余额为:15000.0
可透支额度:5000

取款18000.0成功!
余额:0.0
可透支额度:2000

取款3000.0失败!
超过可透支额度!
余额:0.0
可透支额度:2000

 

你可能感兴趣的:(java练习,面向对象编程,类)