第八章练习题-2

news2024/10/6 18:23:38

第七题

 答案

package com.hspedu.homework.homework07;

public class HomeWork07 {
    public static void main(String[] args) {

    }
}
class Test{ //父类

    String name = "Rose";
    Test(){
        System.out.println("Test");
    }
    Test(String name){
        this.name = name;
    }
}
class Demo extends Test{
    String name= "Jack";
    Demo() {
        super();
        System.out.println("Demo");
    }

    Demo(String s){
        super(s);
    }
public void test(){
        System.out.println(super.name);
        System.out.println(this.name);
}

    public static void main(String[] args) {
        new Demo().test();

       new Demo("john").test();
    }

}

 第八题

题目

BankAccount类

package com.hspedu.homework.homework08;

class BankAccount {
    private double balance;
    private double charge;
    public BankAccount(double initialbalance) {
        this.balance = initialbalance;
    }
    //存款
    public void deposit(double amount) {
       balance += amount;
    }
    //取款
    public void withdraw(double amount) {
       balance -= amount;
    }

    public double getBalance() {
        return balance;
    }

    public void setBalance(double balance) {
        this.balance = balance;
    }

    public double getCharge() {
        return charge;
    }

    public void setCharge(double charge) {
        this.charge = charge;
    }
}

 因为在CheckingAccount类和SavingsAccount类中都需要用到手续费,将charge在父类中以属性的形式定义,并且不放在构造器中,这样可以灵活应用

CheckingAccount类

package com.hspedu.homework.homework08;

public class CheckingAccount extends BankAccount {

//    (1)在上面类的基础上扩展 新类CheckingAccount
//    对每次存款和取款都收取1美元的手续费用


    public CheckingAccount(double initialbalance) {
        super(initialbalance);
    }

    @Override
    public void deposit(double amount) {
        //按照下面这种写法,先计算balanace = balanace + amount
        //然后得到(balanace-1)的值,在调用方法时,返回这个值并输出
        //比如原来余额有1000,存进去100,最后输出的余额是1099,
        // 但是JVM中balance还是1100,出现了偏差
        //return super.deposite(amount) - charge;

        //如果要存100,直接传(100-1)进去
        super.deposit(amount - getCharge());
    }

    @Override
    public void withdraw(double amount) {
        // //如果要取100,直接传(100+1)进去
        super.withdraw(amount + getCharge());
    }
}

重点在于重写的父类的存款和付款方法内的方法体,存款就是把扣掉手续费之后的金额传参给父类的存款方法,取款就是把加上手续费之后的金额传参给父类的存款方法,

main类运行

package com.hspedu.homework.homework08;

public class HomeWork08 {
    public static void main(String[] args) {
        CheckingAccount checkingAccount = new CheckingAccount(100);
        checkingAccount.setCharge(1);
        checkingAccount.deposit(100);
        //查看余额
        System.out.println(checkingAccount.getBalance());//199
        checkingAccount.withdraw(100);
        System.out.println(checkingAccount.getBalance());//98
         
    }
}

运行结果

 

SavingsAccount类

题目解读

1、需要创建一个新类-SavingsAccount类,继承BankAccount类,在这个类中有一个方法earnMonthlylInterest计算每个月的利息

2、并且在这个类中,用户每个月有三次存取款免手续费的机会,机会用完之后,在earnMonthlylInterest中重置机会的数值

解决思路

1、定义一个变量count,并赋初始值3,用if-else分支重写父类存取款方法,控制免手续费的次数

2、定义变量rate,计算利息,并且通过super关键字调用父类的存款方法,将利息存到银行的账户中(是调用而不是重写,也就是不收取手续费,也不会用掉count的次数

package com.hspedu.homework.homework08;

public class SavingsAccount extends BankAccount{
//    (2)扩展前一个练习的BankAccount类,
//    新类SavingsAccount每个月都有利息产生
//    (earnMonthlyInterest方法被调用),
//    并且有每月三次免手续费的存款或取款。
//    在earnMonthlylInterest方法中重置交易计数
    private int count = 3;//次数
    private double rate = 0.01;//利率

    public SavingsAccount(double initialbalance) {
        super(initialbalance);
    }

    @Override
    //原来写的是public double deposit,在方法的最后一句必定要return一个值
    //而此方法的最后一句是count--,系统一直报错
    //存款
    public void deposit(double amount) {
        //判断是否还可以免手续费
        if(count > 0){

            super.deposit(amount);

        }else{
            super.deposit(amount-getCharge());

        }
        count--;
    }
    //取款
    @Override
    public void withdraw(double amount) {
        if(count > 0){
            super.withdraw(amount);
        }else{
            super.withdraw(amount + getCharge());
        }
        count--;
    }

    //计算利息
    public void earnMonthlylInterest(){
        //每个月月初统计上个月的利息,同时重置免收手续费的次数
        count = 3;
        //计算利息,调用父类的存款方法,把利息存进余额,因为此时调用的是父类的存款方法
        //上述有3次机会的是子类重写父类的存款方法,所以是不会用掉3次免手续费的机会的
        super.deposit(getBalance() * rate);
    }
    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }

    public double getRate() {
        return rate;
    }

    public void setRate(double rate) {
        this.rate = rate;
    }
}

main类

package com.hspedu.homework.homework08;

public class HomeWork08 {
    public static void main(String[] args) {

          //测试SavingsAccount
        SavingsAccount savingsAccount = new SavingsAccount(1000);
        //存取款的手续费是1元
        savingsAccount.setCharge(1);
        savingsAccount.deposit(100);
        savingsAccount.deposit(100);
        savingsAccount.withdraw(100);
        System.out.println(savingsAccount.getBalance());//1100
        savingsAccount.withdraw(100);//存取三次之后就开始收手续费
        System.out.println(savingsAccount.getBalance());//999

        //给定一个计时器,到月初的时候执行earnMonthlylInterest方法
        savingsAccount.earnMonthlylInterest();
        System.out.println(savingsAccount.getBalance());//999 + 999*0.01=1008.99
        savingsAccount.withdraw(100);
        savingsAccount.withdraw(100);
        savingsAccount.withdraw(100);
        System.out.println(savingsAccount.getBalance());//708.99
        savingsAccount.deposit(100);
        System.out.println(savingsAccount.getBalance());//807.99

    }
}

 

运行结果

第九题

 

Point类

package com.hspedu.homework.homework09;

public class Point {
    private double x;
    private double y;

    public Point(double x, double y) {
        this.x = x;
        this.y = y;
    }

    public double getX() {
        return x;
    }

    public void setX(double x) {
        this.x = x;
    }

    public double getY() {
        return y;
    }

    public void setY(double y) {
        this.y = y;
    }
}

LabeledPoint类 

package com.hspedu.homework.homework09;

public class LabeledPoint extends Point{
    private String label;

    public LabeledPoint(String label,double x, double y) {
        super(x, y);
        this.label = label;
    }

    public String getLabel() {
        return label;
    }

    public void setLabel(String label) {
        this.label = label;
    }
}

main类

package com.hspedu.homework.homework09;

public class HomeWork09 {
    public static void main(String[] args) {
        LabeledPoint thursday = new LabeledPoint("Black Thursday", 1929, 230.07);
    }
}

第十题

题目

  Doctor类

package com.hspedu.homework.homework10;

public class Doctor {
//    10.编写Poctor类{name, age,job, gender, sal}
//    5个参数的构造器,重写父类的equals0方法:
//    public相应的getter0和setter0方法,
//    并判断测试类中创建的两个对象是否相等。
//    相等就是判断boolean equals(Object obj)属性是否相同
    private String name;
    private int age;
    private String job;
    private char gender;
    private double sal;

    //重写Object类的equals方法,系统自动重写


//    @Override
//    public boolean equals(Object obj) {
//        if (this == obj) return true;
//        if (obj == null || getClass() != obj.getClass()) return false;
//
//        Doctor doctor = (Doctor) obj;
//
//        if (age != doctor.age) return false;
//        if (gender != doctor.gender) return false;
//        if (Double.compare(doctor.sal, sal) != 0) return false;
//        if (name != null ? !name.equals(doctor.name) : doctor.name != null) return false;
//        return job != null ? job.equals(doctor.job) : doctor.job == null;
//    }


    @Override
    public boolean equals(Object obj) {
        if(this == obj){
            return true;
        }

        if(obj instanceof Doctor){
            Doctor doctor = (Doctor) obj;
            //name, age,job, gender, sal
            return this.name.equals(doctor.name) && this.age == doctor.age &&
                    this.job.equals(doctor.job) && this.gender == doctor.gender && this.sal == doctor.sal;
        }
        return false;
    }

    public Doctor(String name, int age, String job, char gender, double sal) {
        this.name = name;
        this.age = age;
        this.job = job;
        this.gender = gender;
        this.sal = sal;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getJob() {
        return job;
    }

    public void setJob(String job) {
        this.job = job;
    }

    public char getGender() {
        return gender;
    }

    public void setGender(char gender) {
        this.gender = gender;
    }

    public double getSal() {
        return sal;
    }

    public void setSal(double sal) {
        this.sal = sal;
    }
}

main类

package com.hspedu.homework.homework10;

public class HomeWork10 {
    public static void main(String[] args) {
        // 并判断测试类中创建的两个对象是否相等。
        //相等就是判断boolean equals(Object obj)属性是否相同
        Doctor doctor1 = new Doctor("jay", 24, "住院医师", '男', 7000);
        Doctor doctor2 = new Doctor("jay", 24, "住院医师", '男', 7000);
        System.out.println(doctor1==doctor2);//输出false
        System.out.println(doctor1.equals(doctor2));//输出true

    }
}

运行结果

 第十一题

题目

Person类 

package com.hspedu.homework.homework11;

class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void run(){
        System.out.println("person run");
    }
    public void eat(){
        System.out.println("person eat");
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

 Student类

package com.hspedu.homework.homework11;

class Student extends Person{
    public Student(String name, int age) {
        super(name, age);
    }

    @Override
    public void run() {
        System.out.println("student run");
    }
    public void study(){
        System.out.println("student study..");
    }
}

main类

package com.hspedu.homework.homework11;

public class HomeWork11 {
    public static void main(String[] args) {
        //向上转型
        Person person = new Student("emma",30);
        //在编译阶段,是看编译类型的,编译类型是Person,
        //可以调用Person类的run和eat方法
        // 因为子类-Student重写了父类的run方法,根据动态绑定机制,首先查找并调用Student类的run方法
        person.run();//输出 student run
        person.eat();//输出 person eat

        //向下转型
        Student student = (Student) person;
        //调用Student类的run和study
        student.run();//输出student run
        student.study();//输出student study...
        student.eat();//漏掉了这一点 person eat
    }
}

运行结果

第十二题 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/102134.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

国考省考行测:标题选择题,仍然是考主旨,借助关联词、主体、结构、或对策分析法找正确的标题,通过偏颇,片面,无关,过重,空泛的方法排除错误选项

国考省考行测:标题选择题,仍然是考主旨,借助关联词、主体、结构、或对策分析法找正确的标题,通过偏颇,片面,无关,过重,空泛的方法排除错误选项 2022找工作是学历、能力和运气的超强…

[附源码]Python计算机毕业设计Django校园商铺

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

44_外部SRAM实验

目录 IS62WV51216简介 IS62WV51216框图 IS62WV51216读时序 IS62WV51216写时序 FSMC简介 FSMC寄存器介绍 硬件连接图 实验源码 IS62WV51216简介 IS62WV51216ISSi (Integrated Silicon Solution,Inc)公司生产的一颗16位宽512K (512*16,即1M字节)容量的CMOS静态内存(SRAM…

现在市场上IT人才大量涌现,现在开始学习编程,以后会有前途吗?

现在市场上IT人才大量涌现,如果我现在开始学习编程,以后会有前途吗?答案是肯定的,一定有前途而且前途远大!下面分析一下具体原因: 未来一定是信息化社会 当今我们正处在第三次信息化浪潮中,这次…

P4 PyTorch 合并与分割

前言: 目录 cat stack split chunk一 cat(合并) df torch.cat([df1,df2,df3],dim0) 要合并的维度可以不相等,其它维度大小必须一样 应用场景: 比如有两个统计数据[class,students,scores] A [4,32,8], 4个…

架构师必读 —— 逻辑模型(5)

宏观在先,微观在后 如果只看局部判断问题,就会阻碍逻辑思考。首先,为了不迷失整体,就要从宏观捕捉事物。宏观是指整体和概要,微观是指局部、细节、个别的部分。我们要首先从宏观上考虑,再逐步展开至微观。 …

“ 这片绿茵场从不缺乏天才,努力才是最终的入场券——梅西 ”

前言 想了又想还是忍不住想发布一篇文章来纪念一下2022年的卡塔尔世界杯,这伟大的诸神黄昏之战。4年一届的世界杯像是一把衡量时间的坐标,正所谓青春不过几届世界杯!2014巴西世界杯在上初一,2018俄罗斯世界杯在上高二,…

使用Easyswoole 搭建简单的Websoket服务

步骤1 修改配置文件MAIN_SERVER.SERVER_TYPE为EASYSWOOLE_WEB_SOCKET_SERVER 如dev.php <?php use EasySwoole\Log\LoggerInterface;return [SERVER_NAME>"EasySwoole",MAIN_SERVER>[LISTEN_ADDRESS>0.0.0.0,PORT>19501,"SERVER_TYPE&quo…

新鲜事儿!只有AI作品的电影节;酷~AI纹身设计师;ChatGPT的接生婆RLHF;Wayve自动驾驶模型MILE… | ShowMeAI资讯日报

&#x1f440;日报合辑 | &#x1f3a1;AI应用与工具大全 | &#x1f514;公众号资料下载 | &#x1f369;韩信子 &#x1f4e2; 『AI Film Festival』只接受AI作品的电影节&#xff0c;一万美元奖金花落谁家&#xff1f; https://aiff.runwayml.com/ Runway ML公司12月7日推…

前端开发--JavaScript基础知识点大全

前端开发--JavaScript基础知识点大全JavaScript 基础1、JavaScript介绍2、变量3、数据类型4、类型转换5、 运算符6、语句6.1 表达式和语句6.2 分支语句6.3 循环语句7、数组8、函数9、对象10、更多JavaScript 基础 1、JavaScript介绍 JavaScript是一种运行在客户端&#xff08…

一个桌面弹幕软件,用来记单词刚刚好

弹幕单词是一款桌面弹幕软件&#xff0c;它可以把词条以弹幕的形式呈现在桌面上&#xff0c;不管这个词条是英语单词还是中文成语&#xff0c;只要结合了相关资料&#xff0c;就非常方便的使用鼠标右键查看此弹幕的相关资料&#xff0c;下面我们来看看这个软件如何使用吧 快速入…

大学生家乡主题甘肃介绍网页代码 dreamweaver网页设计作业制作 WEB静态网页作业模板 dw个人网页作业成品

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法&#xff0c;如盒子的嵌套、浮动、margin、border、background等属性的使用&#xff0c;外部大盒子设定居中&#xff0c;内部左中右布局&#xff0c;下方横向浮动排列&#xff0c;大学学习的前端知识点和布局方式都有…

前端vue面试题集锦1

Vue.extend 作用和原理 官方解释&#xff1a;Vue.extend 使用基础 Vue 构造器&#xff0c;创建一个“子类”。参数是一个包含组件选项的对象。 其实就是一个子类构造器 是 Vue 组件的核心 api 实现思路就是使用原型继承的方法返回了 Vue 的子类 并且利用 mergeOptions 把传入…

使用Mock技术帮助提升测试效率的小tips,你知道几个?

Mock是什么&#xff1f; 我给你描述一下这几个场景&#xff0c;你看看是不是熟悉的呢&#xff1f; 测试一个业务模块&#xff0c;这个业务模块中有几个接口对接到了第三方&#xff0c;因为第三方延期交付&#xff0c;导致项目延期&#xff0c;我又背锅了 我想测试前端页面字体…

作为测试人员,你需要掌握哪些,常用软件测试工具?

前言 作为软件测试人员&#xff0c;你最常用到的测试工具都有哪些呢&#xff1f;本文总结了测试过程中常用的工具&#xff0c;希望对从业人员日常工作有所助益&#xff01; 包含工具内容 测试管理工具 连接服务器 抓包工具 接口测试工具 app自动化工具 性能测试工具 持续集成…

[附源码]计算机毕业设计Node.js橙光公司网站设计论文(程序+LW)

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

nodejs+vue067高校 校园疫情防控系统

录 1 绪论 1 1.1 研究背景 1 1.2 研究现状 1 1.3 研究内容 2 2 系统关键技术 3 2.3 MYSQL数据库 4 2.4 B/S结构 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2经济可行性 5 3.1.3操作可行性 5 3.2 系统性能分析 5 3.3 …

Windows10下用Vscode配置OpenCV (解包即用版)

Windows10下用Vscode配置OpenCV (解包即用版) 维基百科&#xff1a; OpenCV的全称是Open Source Computer Vision Library&#xff0c;是一个跨平台的计算机视觉库。OpenCV是由英特尔公司发起并参与开发&#xff0c;以BSD许可证授权发行&#xff0c;可以在商业和研究领域中免费…

三、详细功能

详细功能 1.去除不同数据库间重复的文献&#xff1a;Reference->Find Duplicates &#xff08;1&#xff09;找到4篇重复的文章&#xff1a;Keep this record可以一篇篇的保留、删除 &#xff08;2&#xff09;按Cancel再按ctrl找到所有重复&#xff1a; &#xff08;3&am…

长达22643字的博客:自定义游戏三子棋超详细解说手把手式教学,人机大战,PVP玩家对战功能制作详解

&#x1f992;这个游戏相信大家都听过&#xff0c;三子棋&#xff0c;不就是井字棋吗&#xff1f;那么今天我们就来亲手制作一个三子棋游戏&#xff0c;实现人机“智能”大战以及玩家PVP对战。 &#x1f412;三子棋的基本功能构思 &#x1f992;面对一个较大的游戏程序我们要做…