笔记总结:

/** 任务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

Java实验1 - 类的继承(super)- 创建checkaccount继承account的更多相关文章

  1. extends 类的继承 / super关键字,调用继承类里面的函数和变量

    Son 继承Father 当其他脚本想调用 Father类里面的变量 or 方法 可以把 Son r=new Son()   等价于 Father r=new Father() 注意: 函数只能单继承 ...

  2. Java面向对象03——类与对象的创建

    类的创建与初始化对象 age: 以类的方式组织代码,以对象的组织(封装)数据  package oop.demon01.demon02; ​ // 学生类(抽象模板) public class Stu ...

  3. java 实验2 类

    共5道大题  最后一题为自动洗牌发牌系统 1) 编写一个类实现银行帐户的概念.包括的属性有:帐号.储户姓名.地址.存款余额,包括的方法有:存款.取款.查询.计算利息.累加利息等. public cla ...

  4. java实验作业类的定义与描述

    1 //1三角形的定义与描述 2 package test; 3 4 public class sjx { 5 private double a,b,c; 6 7 public sjx(double ...

  5. Java实验五报告——TCP传输及加解密

    一.实验内容 1.运行教材上TCP代码,结对进行,一人服务器,一人客户端: 2.利用加解密代码包,编译运行代码,一人加密,一人解密: 3.集成代码,一人加密后通过TCP发送: 注:加密使用AES或者D ...

  6. Java:日历类、日期类、数学类、运行时类、随机类、系统类

    一:Calendar类 java.util 抽象类Calendar   1.static Calendar getInstance()使用默认时区和语言环境获得一个日历. 2. int get(int ...

  7. javascript继承--原型链的 继承

    作者的话:原型链是JavaScript中相当重要的一个知识点,这里我使用了函数结构图,来帮助我更好的理解 /* 原型链继承方式: 通过改变一个对象的原型对象的指向来继承另一个对象 原理: 我们知道,一 ...

  8. java 实验3 继承+多态

    实验3  继承与多态 **类可以实现多个接口 但只有单继承!** 1.继承 1).继承语法  class 子类名 extends 父类{    } 2).构造函数(通过source即可得到) 注意: ...

  9. Java实验--继承与多态

    ---恢复内容开始--- 题目如下: [实验任务一]:面积计算(设计型). 1. 实验要求: 实验报告中要求包括程序设计思想.程序流程图.源代码.运行结果截图.编译错误分析等内容. 2.实验内容: ( ...

随机推荐

  1. windows下安装配置winpcap

    winpcap官网:http://www.winpcap.org/ 1.首先下载安装winpcap.exe,http://www.winpcap.org/install/default.htm 目的是 ...

  2. linux支持并发的服务器回射程序实例

    实例一:不支持并发,单服务器---单客户端 /************************************************************************* > ...

  3. qt坐标系统见解

    窗口坐标为逻辑坐标,是基于视口坐标系的. 视口坐标为物理坐标,是基于绘图设备坐标系的 窗口坐标始终以视口坐标为最终目标进行映射: QPainter::setWindow 修改了窗口位置和大小(左上角重 ...

  4. vue中页面跳转拦截器的实现方法

    首先对index.js的router进行配置; export default new Router({ routes: [ { path: '/consultancy', name: 'consult ...

  5. storm常见问题

    一.storm ui 不显示 supervisor 信息 在zk节点上删掉storm信息,重新启动storm集群即可

  6. Linux安装zookeeper集群

    一.单机部署: ①下载.解压 http://archive.apache.org/dist/zookeeper/ tar -zxf zookeeper-3.4.10.tar.gz -C /usr/lo ...

  7. [转帖]linux各种IPC机制

    linux各种IPC机制 docker中的资源隔离,一种就是IPC的隔离.IPC是进程间通信. 下面的文章转载自https://blog.csdn.net/yyq_9623/article/detai ...

  8. 编写并提取简易 ShellCode

    ShellCode 通常是指一个原始的可执行代码的有效载荷,ShellCode 这个名字来源于攻击者通常会使用这段代码来获得被攻陷系统上的交互 Shell 的访问权限,而现在通常用于描述一段自包含的独 ...

  9. QAbstractItemModel使用样例与解析(Model::index使用了createIndex,它会被销毁吗?被销毁了,因为栈对象出了括号就会被销毁)

    参考:qt源码 qstandarditemmodel_p.h qstandarditemmodel.h qstandarditemmodel.cpp qabstractitemmodel.h qabs ...

  10. MySQL 聚合函数(三)MySQL对GROUP BY的处理

    原文来自MySQL 5.7 官方手册:12.20.3 MySQL Handling of GROUP BY SQL-92和更早版本不允许SELECT列表,HAVING条件或ORDER BY列表引用未在 ...