• Java实验1


    笔记总结:

    /** 任务81: 继承性,(降低代码亢余度)
     *  1.class 子类A Extends 父类B,(private 的内容无法被继承)
     *  2. 方法可以覆盖(Overrides), 注意权限!
     *  3.在子类中,仅可用 super( ) 调用父类的构造方法和变量,
     *              1.super可以调用父类隐藏的成员变量
     *              2/方法覆盖后,通过super调用父类的方法
     *              3/若方法不覆盖,也可以通过super调用父类的方法
     *  4. this仅可调用本类中的构造方法属性!
     */

    编程总结:

    1. super(id,balance,annualRate); 需要父类对应的构造方法,接受参数为(id,balance,annualRate)
    2.super(),同样需要父类对应的构造方法,接受参数为空
    3.父类变量都private了,只能靠方法来调用/查看/修改!

    题目要求:

    创建Account类的一个子类CheckAccount代表可透支的账户,该账户中定义一个属性overdraft代表可透支限额。在CheckAccount类中重写withdraw方法,其算法如下:
    如果(取款金额<账户余额),
    可直接取款
    如果(取款金额>账户余额),
    计算需要透支的额度
    判断可透支额overdraft是否足够支付本次透支需要,如果可以
        将账户余额修改为0,冲减可透支金额
    如果不可以
        提示用户超过可透支额的限额
    
    要求:写一个用户程序测试CheckAccount类。在用户程序中,创建一个账号为1122、余额为20000、年利率4.5%,可透支限额为5000元的CheckAccount对象。
    使用withdraw方法提款5000元,并打印账户余额和可透支额。
    再使用withdraw方法提款18000元,并打印账户余额和可透支额。
    再使用withdraw方法提款3000元,并打印账户余额和可透支额。

    编程实现:

    1/实现Account.java

    public class Account {
        private int id;
        private double balance;
        private double annualRate;
      //  public Account(){}
        public Account(int id,double balance,double annualRate){
            this.id=id;
            this.balance=balance;
            this.annualRate=annualRate;
        }
        public int getId() {
            return id;
        }
        public double getBalance() {
            return balance;
        }
        public double getAnnualRate() {
            return annualRate;
        }
        public void setId(int id) {
            this.id = id;
        }
        public void setAnnualRate(double annualRate) {
            this.annualRate = annualRate;
        }
    
        public void setBalance(double balance) {
            this.balance = balance;
        }
        public void withdraw(double amount){  //取钱
            if(amount>this.balance){
                System.out.println("余额不足");
            }
            else{
                this.balance-=amount;
            }
        }
        public void deposit(double amount){  //存钱
            this.balance+=amount;
        }
    }
    class CheckAccount extends Account{
        private double overdraft;
        public CheckAccount(int id,double balance,double annualRate,double t){
            super(id,balance,annualRate);
            this.overdraft=t;
        }
        public void showinfo(){
            System.out.println("您的余额:"+this.getBalance()+"	"+
                    "您的可透支余额:"+this.overdraft);
        }
        public void withdraw(double amt){
            if(amt<=super.getBalance())
                super.setBalance(super.getBalance()-amt );
            else{
                double val=amt-super.getBalance();
                if(val<=this.overdraft)
                {
                    super.setBalance(0);
                    this.overdraft-=val;
                }
                else
                    System.out.println("该消费超过可透支额的限额");
            }
        }
    }

    2.实现Test.java (测试类)

    import java.lang.*;
    import static java.lang.System.*;
    
    public class Test{
        public static void main(String[] args) {
            //创建一个测试account
            Account a=new Account(1122,20000,0.045);
            a.withdraw(3000);
            System.out.println("账户余额: "+a.getBalance());
    
            a.withdraw(2500);
            a.deposit(3000);
         //   System.out.println("账户余额: "+a.getBalance());
          //  System.out.println("月利率: "+a.getAnnualRate());
    
            //创建一个测试CheckAccount类
            CheckAccount c=new CheckAccount(1122,20000,0.045,5000);
    
            c.withdraw(5000);c.showinfo();
            c.withdraw(18000);c.showinfo();
            c.withdraw(3000);c.showinfo();
        }
    }

    测试结果:

    账户余额: 17000.0
    您的余额:15000.0    您的可透支余额:5000.0
    您的余额:0.0    您的可透支余额:2000.0
    该消费超过可透支额的限额
    您的余额:0.0    您的可透支余额:2000.0
    你不逼自己一把,你永远都不知道自己有多优秀!只有经历了一些事,你才会懂得好好珍惜眼前的时光!
  • 相关阅读:
    一千行MySQL学习笔记(七)
    一千行MySQL学习笔记(六)
    一千行MySQL学习笔记(五)
    一千行MySQL学习笔记(四)
    一千行MySQL学习笔记(三)
    活动时的测试点及注意事项
    [AX2012]关于财务默认维度
    [AX]AX2012 R2 HR Jobs, Positions, Department和Workers
    [AX]AX2012 R2 EP员工自助服务中的产品不能显示图片的问题
    [AX]AX2012 R2 采购订单的“Request change”
  • 原文地址:https://www.cnblogs.com/zhazhaacmer/p/9768836.html
Copyright © 2020-2023  润新知