head first java第七章的学习

终于到了最令人惊喜的环节了!面向对象的思想理解。

还是先看看引言部分

为了能够写出可适应性强,易于更改和重用的程序,将会学习5个设计步骤,3个多态的技巧,还有八个让程序更有适应性的方法,4项对继承的建议。

椅子大战的回顾

这里用到了抽象加上继承的思想,让代码简洁,可复用

对每一个对象进行分析,抽出共同的类别、方法,如果子类中需要不一样的方法,那就把父类的方法覆盖掉(override)。

继承:继承的是实例变量和方法,用extends(扩展的意思,表明子类是扩展了父类,是更特殊的类) 父类来表示

例子:父类是医生Doctor 共同是 是否在医院工作的boolean变量workAtHospital,执行检查的操作void treatPatient{}

子类是家庭医生FamilyDoctor和外科医生Surgeon

家庭医生还要打电话boolean makePhoneCalls,提出诊断过程void giveAdvice,外科医生还得进行手术void treatPatient(),截肢操作void makeIncision()。

代码实现如下:

class Doctor
{
boolean workAtHospital;
void treatPatient()
{
}
}
class FamilyDoctor extends Doctor
{
boolean makePhoneCalls;

 

void giveAdvice(){}
}
class Surgeon extends Doctor
{
override void treatPatient(){}
void makeIncision(){}
}

只在乎设计的动物仿真树

面临情况:现有一部分动物,但不知何时会增加新的动物

解决办法:

步骤

1.找共同点:辨别出所有动物都有的特征

2.设计出父类(有相同的实例变量和行为)

3.子类特殊化方法

4.再细分子类,找出小团体的共同点,抽象出第二层,比如说在类的下属中另设犬科roam相同和猫科roam也相同,还剩下一个犀牛

5.完成

实例变量:动物的名称;吃的食物;饥饿值;活动区域范围;所在位置。

行为:进食void eat();发出声音void makeNoise();睡觉void sleep();漫步void roam()。

 

结果:

在一个对象调用方法时,会选择最近的那一个方法进行调用

技巧:怎么判断自己设计的类是否继承关系正确:is-a,而不是have-a(应该是实例变量的关系)

继承的意义

1.让代码更简洁,修改起来方便

2.制定一种规范、协议

多态的意义

可以将同一个父类的子类对象整合成参数,及时新加入子类也不用重写代码

重载和重写

两个方面:

语法形式规定-重载的方法头都得一样,重写只要参数类型不一样(因为重写和继承与多态的特性没有关联)

权限规定-重载不可以降低存储权限,重写随意

关于练习题

我看的书是中译版,先前看知乎上面有人说这本书有很多翻译错误我还不太在意,不过现在终于是遇到了。

连线题目涉及到多态的答案:应该是第四行的那个答案,也就是说和c类对象本身的操作是一模一样的。

总结

本章介绍了继承的设计步骤和继承的意义,并且引出了多态的一些形式和应用,最后介绍了重载和重写的区别。

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值