第七章: 面向对象编程(中级) 二

9.object类

在这里插入图片描述
在这里插入图片描述

1.equals方法

在这里插入图片描述
在这里插入图片描述

第二条:true
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.查看jdk源码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.子类重写equals方法

String中equals方法
在这里插入图片描述

在这里插入图片描述
Object中equals方法
在这里插入图片描述
Integer中的equals方法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

New就是创建一个对象,下面两个integer型对象的地址不一样
在这里插入图片描述
上面判断的==,两边的地址不一样
下面的equals变为判断值是否相等
在这里插入图片描述

3.equals课堂练习(重写equals)

在这里插入图片描述
在这里插入图片描述
person1.equals(person2)中的equals方法是从object中继承而来的,而object中equals方法默认就是比较对象地址是否相同,所以为FALSE
在这里插入图片描述

我们可以重写equals方法进行比较
在这里插入图片描述

这里的this代表的就是当前对象person1,obj就是指person2
在这里插入图片描述
在这里插入图片描述
上面这一行的this指的就是person1,p指的就是person2
在这里插入图片描述
在这里插入图片描述
p1.equals.(p2)还是没有重写equals方法,属于默认的object类之间的比较,所以为假
S1.equals.(S2)已经重写了equals方法为string类型比较,所以为真
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

最后一个类型不同,无法进行比较,编译出错

2.hashCode方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.toString方法

在这里插入图片描述

全类名就是包名+类名
在这里插入图片描述
在这里插入图片描述
下面的monster.toString()因为没有重写toString()方法,所以使用的object中的toString()方法,本质就是object.toString()
在这里插入图片描述
在这里插入图片描述

下面我们对toString()方法进行重写
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.Finalize

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

下面这个是默认的finalize方法,就是调用父类的即object的方法
在这里插入图片描述

现在我们重写finalize方法,但此时我们发现重写的finalize()方法中的输出语句并没有输出,因为虽然bwm = null,但bwm对象没有立刻变为垃圾被销毁,而是需要调用垃圾回收机制
在这里插入图片描述
在这里插入图片描述
此时我们使用System.gc()方法主动调用垃圾回收器,因为调用的时候,程序没有停在这边等待,所以先执行了下面那一句话
在这里插入图片描述

10.断点调试(debug)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.断点调试案例1(变量的变化情况)

在这里插入图片描述
点击左键,出现一个红色的圆圈,这个就是断点
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

逐行执行
在这里插入图片描述

进入到方法体内
在这里插入图片描述

强制进入到方法体内
在这里插入图片描述

跳出方法
在这里插入图片描述

直接执行到下一个断点
在这里插入图片描述

结束debug过程(红色小方框)
在这里插入图片描述

2.断点调试案例2(数组越界的异常)

在这里插入图片描述
在这里插入图片描述

3.断点调试案例3(如何追源代码)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.断点调试案例4(直接执行到下一个断点)

在这里插入图片描述
在这里插入图片描述

5.断点调试课后练习

在这里插入图片描述

第一题
在这里插入图片描述

第一步(加载person类信息)
在这里插入图片描述

第二步:默认初始化和显示初始化是看不见的,进入到构造器
在这里插入图片描述
name默认值先是null,之后为jack
在这里插入图片描述
age默认值为0,之后变为20
在这里插入图片描述
在这里插入图片描述
下面看一下system.out.println(jack)有没有调用我们的toString()方法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后,整个过程结束
在这里插入图片描述

第二题
在这里插入图片描述
本来按照运行为B,应该到B中sum()方法,但B中没有sum()方法,所以按照继承继承机制进入了A中的sum()方法。
在这里插入图片描述
接着因为运行类型为B,根据动态绑定机制,我们到了B类中getI()方法
在这里插入图片描述

11.项目-零钱通

1.零钱通介绍

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.零钱通菜单

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.零钱通明细

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.零钱通收益

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.零钱通消费

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.零钱通退出确认

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

或者
在这里插入图片描述

7.零钱通金钱校验

在这里插入图片描述
在这里插入图片描述

8.零钱通OOP版

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
唯一要改变的地方就是要将下面的break改成return,break是用在switch中的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

12.本章练习

1.本章练习1

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
因为这边重写过toString()方法,所以输出的结果如下所示
在这里插入图片描述

2.本章练习2

在这里插入图片描述
在这里插入图片描述

3.本章练习3

在这里插入图片描述

Teacher类
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Professor类,其他的子类就不写了
在这里插入图片描述
Main方法
在这里插入图片描述

4.本章练习4

在这里插入图片描述

父类Employee
在这里插入图片描述
在这里插入图片描述

子类Manage
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

子类worker
在这里插入图片描述
Main方法
在这里插入图片描述

5.本章练习5

在这里插入图片描述

父类Employee
在这里插入图片描述
在这里插入图片描述

子类worker
在这里插入图片描述

子类pleasant
在这里插入图片描述

子类teacher
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

子类scientist
在这里插入图片描述
在这里插入图片描述

6.本章作业6

在这里插入图片描述
第一个super:由于age是私有的,所以无法访问
第一个this;先到本类中进行查找,如果没有,再到父类中进行查找
在这里插入图片描述

7.本章练习7

在这里插入图片描述
在这里插入图片描述
注意,下面两个对象没有给他一个对象引用,就是匿名对象
在这里插入图片描述
new.Demo().test()中
先是new.Demo(),执行Demo类中的
在这里插入图片描述
然后执行super(),即Test类中的(注意:这里的super()不写出来,也是默认在的)
在这里插入图片描述
直接执行new.Demo().后面的test()
在这里插入图片描述
首先输出super.name,结果为Rose
接着输出this.name,结果为Jack

new.Demo(“john”).test()同理
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8.本章练习8

在这里插入图片描述

BankAccount类
在这里插入图片描述

CheckingAccoount类
在这里插入图片描述
在这里插入图片描述

SavingAccount类
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9.本章练习9

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

10.本章作业10

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

11.本章练习11

在这里插入图片描述

注意动态绑定
在这里插入图片描述
在这里插入图片描述

12.本章练习12

在这里插入图片描述

13.本章练习13

在这里插入图片描述

子类Student类
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

子类teacher类
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

父类Person类
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Mian类
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上面的persons[i].toString(),的编译类型是Person,但调用toString()时,会自动绑定它的运行类型
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

14.本章练习14

在这里插入图片描述
在这里插入图片描述

15.本章练习15

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

下面AAA b1 = obj;表示obj与b1指向同一个对象
Obj = b1;让obj重新指向b1,b1原先是指向bbb的
在这里插入图片描述
在这里插入图片描述
运行类型可以改变,但编译类型无法改变,一直就是AAA

16.本章练习16

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值