笔记总结:

/** 任务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. JavaScript里的类和继承(转)

    转自: http://www.h5cn.com/js/jishu/2016/0121/17634.html js与大部分客户端语言有几点明显的不同: JS是 动态解释性语言,没有编译过程,它在程序运行 ...

  2. 使用 pyenv 可以在一个系统中安装多个python版本

    Installl related yum install readline readline-devel readline-static -y yum install openssl openssl- ...

  3. DS博客作业--07查找

    目录 DS博客作业--07查找 1.本周学习总结(0--2分) 1.思维导图 2.谈谈你对查找运算的认识及学习体会. 2.PTA实验作业(6分) 2.1.题目1:6-1 二叉搜索树的操作集 (30 分 ...

  4. System x 服务器制作ServerGuide U盘安装Windows Server 2008 操作系统 --不格式化盘

    1.全格式化 用ServerGuide10.5 刻录成U盘 下载附件中的Rufus 3.6工具,并制作引导U盘 以管理员权限打开Rufus 3.6, 选择镜像文件 2.不格式化,仅安装C盘下载老毛桃U ...

  5. Scrapy setup.py 各参数详解

    实际上Scrapyd的打包工具用到了setuptools,而打包参数主要是在setuptools里面的setup函数中设置. ************************************* ...

  6. 【剑指OFFER】链表中倒数第k个结点

    [问题描述] 输入一个链表,输出该链表中倒数第k个结点. 时间限制:1秒 空间限制:32768K [AC代码] p先走k步,q再走,这样p和q的距离就是k了,等p走到尽头,那么q自然就到了倒数第k个位 ...

  7. 2019 Multi-University Training Contest 2: 1010 Just Skip The Problem 自闭记

    2019 Multi-University Training Contest 2: 1010 Just Skip The Problem 自闭记 题意 多测.每次给你一个数\(n\),你可以同时问无数 ...

  8. LC 599. Minimum Index Sum of Two Lists

    题目描述 Suppose Andy and Doris want to choose a restaurant for dinner, and they both have a list of fav ...

  9. windows下memcache扩展安装和搭建

    ### windows下memcache扩展安装和搭建 背景:在做微信公众号的开发时,token的有效期为7200秒,所以需要对token进行保存,在这选择了memcache作为缓存工具 memcac ...

  10. Python二、十、八进制相互转换

    进制转换:先介绍用传统数学方法,再介绍用python内置方法 二进制转十进制: 1101 转为十进制 1*2^(4-1)+1*2^(3-1)+0*2^(2-1)+1*2^(1-1) 即各个位拆开,乘以 ...