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.实验内容: ( ...
随机推荐
- Public thanks to Shao Qirui for his contribution to open source software
Public thanks to Shao Qirui for his contribution to open source softwareShao Qirui is a student, but ...
- 集群架构03·MySQL初识,mysql8.0环境安装,mysql多实例
官方网址 https://dev.mysql.com/downloads/mysql/社区版本分析 MySQL5.5:默认存储引擎改为InnoDB,提高性能和可扩展性,增加半同步复制 MySQL5.6 ...
- 【MOOC课程学习记录】程序设计与算法(一)C语言程序设计
课程结课了,把做的习题都记录一下,告诉自己多少学了点东西,也能给自己一点鼓励. ps:题目都在cxsjsxmooc.openjudge.cn上能看到,参考答案在差不多结课的时候也会在mooc上放出来. ...
- 【leetcode算法-简单】20. 有效的括号
[题目描述] 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合.左括号必须以正确的顺序闭合.注意空字 ...
- 导出远程oracle数据库到本地
1.以管理员身份运行 Net Manager 以管理员身份运行cmd
- python3连接oracle数据库
声明:python,cx_Oracle和instantclient的版本应一致 我这里使用的版本是python3.6 64位 ,cx_Oracle-5.3-11g.win-amd64-py3.6-2和 ...
- IDEA插件之alibaba编程规范
1.做什么 这是阿里巴巴的编码规范插件,规范内容可以查阅 https://github.com/alibaba/p3c/blob/master/阿里巴巴Java开发手册(华山版).pdf 2.File ...
- Java Mysql--链接数据库,数据库字段比较
连接库操作: package com.qa.xxx; import org.springframework.stereotype.Component; import java.lang.reflect ...
- docker-get拉取镜像
docker-get Let you get all docker images without having network problem. Install curl -kLO https://s ...
- JS基础_实参可以是任何值
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...