练习1:

Account:

package com.aff.sup;

public class Account {
private int id;// 账号
private double balance;// 余额
private double annualInterestRate;// 年利率 public Account(int id, double balance, double annualInterestRate) {
super();
this.id = id;
this.balance = balance;
this.annualInterestRate = annualInterestRate;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public double getBalance() {
return balance;
} public void setBalance(double balance) {
this.balance = balance;
} public double getAnnualInterestRate() {
return annualInterestRate;
} public void setAnnualInterestRate(double annualInterestRate) {
this.annualInterestRate = annualInterestRate;
} public double getMonthlyInterest() {
return this.annualInterestRate / 12; } // 取钱
public void withdraw(double amount) {
if (balance >= amount) {
balance -= amount;
System.out.println("成功取出" + amount);
} else {
System.out.println("余额不足");
}
} // 存钱
public void deposit(double amount) {
balance += amount;
System.out.println("成功存入" + amount);
} }

TestAccount:

package com.aff.sup;

//写一个用户测试Account类, 在用户程序中创建一个账号为1122,余额20000,年利率4.5%的Account对象
//使用withdraw方法提款30000,并打印个余额
//再使用withdraw 方法提款2500 使用deposit方法存款3000,然后打印余额和月利率
public class TestAccount {
public static void main(String[] args) {
Account acct = new Account(1122, 20000, 0.045);
acct.withdraw(30000);
System.out.println("当前余额:" + acct.getBalance()); acct.withdraw(2500);
acct.deposit(3000);
System.out.println("当前余额:" + acct.getBalance() + "月利率:" + acct.getMonthlyInterest());
}
} 输出结果:

余额不足
当前余额:20000.0
成功取出2500.0
成功存入3000.0
当前余额:20500.0月利率:0.00375

 

练习2:创建Acount类的一个子类CheckAccount代表可透支账户,该账户中定义一个属性overdraft代表可透支余额,

在CheckAccount类中重写withdraw方法,

其算法如下:

如果(取款金额<账户余额), 可直接取款

如果(取款金额>账户余额),就散需要透支的额度,判断可透支overdraft是否足够支付本次透支需要,

如果可以将账户余额修改为0,重减可透支金额

如果不可以,提示用户超过可透支限额

Account:

package com.aff.sup;

public class Account {
protected int id;// 账号
protected double balance;// 余额
protected double annualInterestRate;// 年利率 public Account(int id, double balance, double annualInterestRate) {
super();
this.id = id;
this.balance = balance;
this.annualInterestRate = annualInterestRate;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public double getBalance() {
return balance;
} public void setBalance(double balance) {
this.balance = balance;
} public double getAnnualInterestRate() {
return annualInterestRate;
} public void setAnnualInterestRate(double annualInterestRate) {
this.annualInterestRate = annualInterestRate;
} public double getMonthlyInterest() {
return this.annualInterestRate / 12; } // 取钱
public void withdraw(double amount) {
if (balance >= amount) {
balance -= amount;
System.out.println("成功取出" + amount);
} else {
System.out.println("余额不足");
}
} // 存钱
public void deposit(double amount) {
balance += amount;
System.out.println("成功存入" + amount);
} }

CheckAccount:

package com.aff.sup;

public class CheckAccount extends Account {
private double overdraft;// 可透支额度 public CheckAccount(int id, double balance, double annualInterestRate, double overdraft) {
super(id, balance, annualInterestRate);
this.overdraft = overdraft;
} public double getOverdraft() {
return overdraft;
} public void setOverdraft(double overdraft) {
this.overdraft = overdraft;
} // 存在可透支额度的取钱
public void withdraw(double amount) {
if (balance >= amount) {
balance -= amount;
System.out.println("成功取出" + amount);
} else if (overdraft >= amount - balance) {
overdraft -= (amount - balance);
balance = 0;
} else {
System.out.println("超过可透支限额");
}
}
}

TestCheckAccount:

package com.aff.sup;
//写一个用户测试Account类, 在用户程序中创建一个账号为1122,余额20000,年利率4.5%的CheckAccount对象
//使用withdraw方法提款5000,并打印个余额与可透支额度
//再使用withdraw 方法提款18000, 并打印个余额与可透支额度
//再使用withdraw 方法提款3000 ,并打印个余额与可透支额度
public class TestCheckAccount {
public static void main(String[] args) {
CheckAccount ca = new CheckAccount(1122, 20000, 0.045, 5000);
ca.withdraw(5000);
System.out.println("当前余额:" + ca.getBalance() + "可透支额度:" + ca.getOverdraft());
ca.withdraw(18000);
System.out.println("当前余额:" + ca.getBalance() + "可透支额度:" + ca.getOverdraft());
ca.withdraw(3000);
System.out.println("当前余额:" + ca.getBalance() + "可透支额度:" + ca.getOverdraft());
}
} 输出结果:

成功取出5000.0
当前余额:15000.0可透支额度:5000.0
当前余额:0.0可透支额度:2000.0
超过可透支限额
当前余额:0.0可透支额度:2000.0

继承性与super的使用练习的更多相关文章

  1. JAVASE(九)面向对象特性之 : 继承性、方法重写、关键字super、

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 1.继承性 1.1 为什么要类的继承性?(继承性的好处) ①减少了代码的冗余,提高了代码的复用性:②更好 ...

  2. java 面向对象(十四):面向对象的特征二:继承性 (三) 关键字:super以及子类对象实例化全过程

    关键字:super 1.super 关键字可以理解为:父类的2.可以用来调用的结构:属性.方法.构造器3.super调用属性.方法:3.1 我们可以在子类的方法或构造器中.通过使用"supe ...

  3. Objective-C语言继承性

    • 继承性是面向对象的重要概念之一,子类能够继承父类的某些方法和成员变量.作用域限定符为private 的成员变量是不可以被继承的.子还可以重写父类的方法. • 继承是单继承,要多继承引入了协议 •子 ...

  4. python高级编程之访问超类中的方法:super()

    # -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #超类01 #它是一个内建类型,用于访问属于某个对象超类特性 pri ...

  5. java封装性、继承性及关键字

    方法的参数传递(重点.难点)1.形参:方法声明时,方法小括号内的参数   实参:调用方法时,实际传入的参数的值 2.规则:java中的参数传递机制:值传递机制 1)形参是基本数据类型的:将实参的值传递 ...

  6. Java中的继承性特性

    继承性是java中的第二特性之一.而继承性最为关键的地方为:代码重用性的问题,利用继承性可以从已有的类中继续派生出新的子类,也可以利用子类扩展出更多的操作功能. 继承性的实现代码为:class 子类 ...

  7. python第四十四课——继承性之单继承

    2.继承性 继承: 使用场景: 1).生活层面:... 2).计算机层面: 两部分组成,一部分我们称为父类(基类.超类.superclass),另一部分我们称为子类(派生类.subclass), 子类 ...

  8. Java_面向对象中的this和super用法

    this: 1.使用在类中,可以用来修饰属性.方法.构造器 2.表示当前对象或者是当前正在创建的对象 3.当形参与成员变量重名时,如果在方法内部需要使用成员变量,必须添加 this 来表明该变量时类成 ...

  9. Java学习:面向对象的三大特征:封装性、继承性、多态性之继承性

    面向对象的三大特征:封装性.继承性.多态性. 继承 继承是多态的前提 ,如果没有继承,就没有多态. 继承主要解决的问题就是:共性抽取. 继承关系当中的特点: 子类可以拥有父类的“内容” 子类还可以拥有 ...

随机推荐

  1. Linux文件删除空间未释放

    当系统空间使用量过大需要清理空间或者清理某个文件时,有时会出现执行了删除命令之后磁盘空间并没有释放,很多人首次遇到该情况时会比较困惑,在考虑是不是像windows系统的回收站一样,删除只是逻辑删除到回 ...

  2. JS中由闭包引发内存泄露的深思

    目录 一个存在内存泄露的闭包实例 什么是内存泄露 JS的垃圾回收机制 什么是闭包 什么原因导致了内存泄露 参考 1.一个存在内存泄露的闭包实例 var theThing = null; var rep ...

  3. mybatis添加信息自动生成主键

    一.使用Oracle数据库 举例:添加员工的时候自动生成主键 1.在dao接口中声明方法 2.在mapper中实现该方法 需要先在数据表中创建序列 3.测试 注意:在调用过save方法之后,emp对象 ...

  4. rsync客户端一键安装rsync脚本(源码)

    客户端 read -np "请输入源码rsync的URL 地址 包名(以空格为分隔符,别带/):" URL DZ BM yum remove -y rsync &>& ...

  5. 基于SSM的健身房管理系统

    基于SSM的健身房管理系统 The project was made in 2020-05-05~2020-05-10 谨以此片博文记录下我的第一个Java小Demo 项目展示 用户登录页 用户注册页 ...

  6. 【Hadoop离线基础总结】MapReduce倒排索引建立

    MapReduce倒排索引建立 求某些单词在文章中出现多少次 有三个文档的内容,求hello,tom,jerry三个单词在其中各出现多少次 hello tom hello jerry hello to ...

  7. 【matlab 基础篇 02】基础知识一键扫盲,看完即可无障碍编程(超详细+图文并茂)

    博主快速入门matlab,系统地整理一遍,如何你和我一样是一个新手,那么此文很适合你: 本人能力有限,文中难免有错误和纰漏之处,请大佬们不吝赐教 创作不易,如果本文帮到了您: 请帮忙点个赞

  8. STM32 TIM1高级定时器配置快速入门

    layout: post tags: [STM32] comments: true 文章目录 layout: post tags: [STM32] comments: true 重点内容 时基单元 计 ...

  9. 白话马尔科夫链蒙特卡罗方法(MCMC)

    前言 你清茶园不是人待的地方! 里面的个个都是人才,说话又好听--就是我太菜了啥也听不懂,这次期中还考的贼**烂,太让人郁闷了. 最近课上讲这个马尔科夫链蒙特卡罗方法,我也学得一塌糊涂.这时我猛然想起 ...

  10. zabbix部署与配置

    zabbix部署与配置 1.zabbix的web界面是基于php开发,所以创建lnmp环境来支持web界面的访问 yum install nginx php php-devel php-mysql p ...