Java实验1 - 类的继承(super)- 创建checkaccount继承account
2024-09-05 06:48:01
笔记总结:
/** 任务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()+"\t"+
"您的可透支余额:"+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
最新文章
- ViewPager+RadioGroup实现标题栏切换,Fragment切换
- 总结整理 -- python系列
- Oracle修改默认字符编码
- bzoj roll题器(Py大法好)
- ubuntu12.04安装Vmware Tools
- SQL Fetch size
- hadoop使用笔记
- java Pattern和Matcher详解
- 分页 js
- Amazon email system中使用的字体
- linux发布环境初始化脚本
- Netty的ByteToMessageDecoder/LengthFieldBasedFrameDecoder
- python 全栈开发,Day47(行级块级标签,高级选择器,属性选择器,伪类选择器,伪元素选择器,css的继承性和层叠性,层叠性权重相同处理,盒模型,padding,border,margin)
- 【封装函数】当前元素距离html文档顶部距离
- WEB后台认证机制
- Ubuntu Spark 环境搭建(转)
- JSTL标签用法:<;c:choose>;<;c:forEach>;<;c:if>;<;c:when>;<;c:set>;
- Grid++Report
- 网页与APP中那些优美的登陆表单
- promise-async-await