Java实验1 - 类的继承(super)- 创建checkaccount继承account
笔记总结:
/** 任务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的更多相关文章
- extends 类的继承 / super关键字,调用继承类里面的函数和变量
Son 继承Father 当其他脚本想调用 Father类里面的变量 or 方法 可以把 Son r=new Son() 等价于 Father r=new Father() 注意: 函数只能单继承 ...
- Java面向对象03——类与对象的创建
类的创建与初始化对象 age: 以类的方式组织代码,以对象的组织(封装)数据 package oop.demon01.demon02; // 学生类(抽象模板) public class Stu ...
- java 实验2 类
共5道大题 最后一题为自动洗牌发牌系统 1) 编写一个类实现银行帐户的概念.包括的属性有:帐号.储户姓名.地址.存款余额,包括的方法有:存款.取款.查询.计算利息.累加利息等. public cla ...
- java实验作业类的定义与描述
1 //1三角形的定义与描述 2 package test; 3 4 public class sjx { 5 private double a,b,c; 6 7 public sjx(double ...
- Java实验五报告——TCP传输及加解密
一.实验内容 1.运行教材上TCP代码,结对进行,一人服务器,一人客户端: 2.利用加解密代码包,编译运行代码,一人加密,一人解密: 3.集成代码,一人加密后通过TCP发送: 注:加密使用AES或者D ...
- Java:日历类、日期类、数学类、运行时类、随机类、系统类
一:Calendar类 java.util 抽象类Calendar 1.static Calendar getInstance()使用默认时区和语言环境获得一个日历. 2. int get(int ...
- javascript继承--原型链的 继承
作者的话:原型链是JavaScript中相当重要的一个知识点,这里我使用了函数结构图,来帮助我更好的理解 /* 原型链继承方式: 通过改变一个对象的原型对象的指向来继承另一个对象 原理: 我们知道,一 ...
- java 实验3 继承+多态
实验3 继承与多态 **类可以实现多个接口 但只有单继承!** 1.继承 1).继承语法 class 子类名 extends 父类{ } 2).构造函数(通过source即可得到) 注意: ...
- Java实验--继承与多态
---恢复内容开始--- 题目如下: [实验任务一]:面积计算(设计型). 1. 实验要求: 实验报告中要求包括程序设计思想.程序流程图.源代码.运行结果截图.编译错误分析等内容. 2.实验内容: ( ...
随机推荐
- Python数据结构与语法
字典:Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组.字典等其他容器模型:值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组:遍历字典时遍历的是键:访问v ...
- How to Create and Use Facebook Messenger Codes (June 2019)
How to Create and Use Facebook Messenger Codes (June 2019) By Gerardo Salandra What is a Messenger ...
- elasticsearch启动日志报错not enough master nodes discovered during pinging (found [[]], but needed [-1]), pinging again
排查步骤 逻辑上讲是,一个节点去ping master节点,结果却没有得到回应,多次重试依旧失败.应该重点观察: 1.master启动后,IP是否可以有防火墙权限,设置防火墙规则或则直接关闭防火墙 ...
- mac必装软件
1.IINA: https://iina.io/ 2.keka: https://www.keka.io/zh-cn/ 3.欧陆词典: https://www.eudic.net/v4/en/app/ ...
- Python基础总结之第七天开始【总结字符串、列表、元组的常用方法】(新手可相互督促)
前面的笔记说,python中的一切数据类型都是对象 我们在细化下就是:对象可由两部分组成:对象数据和对象方法 针对不同类型的数据对象,有不同的操作对象的方法. 那么我们开始看下字符串对象的常用方法: ...
- jdk1.8 Maven 的安装教程
1.下载java1.8 URL: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-213315 ...
- oracle数据库用户之间授权
今天遇到一个数据库的问题: 系统数据库用户下创建了几个视图用于外部系统开发报表使用,当外部系统提取视图数据时,需要通过一个只能访问需要视图权限的用户,于是想到给他创建一个新的用户,并给这个用户分配只能 ...
- 二叉查找树 & B(B-)树 & B+树 & B*树
一 二叉查找树 1 特点 (1)所有非叶子结点至多拥有两个子节点, left和right (2)一个结点存储一个关键字 (3)非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树 2 ...
- mysql 字段定义不要用null的分析
一 NULL 为什么这么经常用 (1) java的null null是一个让人头疼的问题,比如java中的NullPointerException.为了避免猝不及防的空指针,需要小心翼翼地各种if判断 ...
- php7和PHP5对比的新特性和性能优化
1 抽象语法树( AST) 1)在 PHP5中,从 php 脚本到 opcodes 的执行的过程是: Lexing:词法扫描分析,将源文件转换成 token 流: Parsing:语法分析,在 ...