201711671224 《Java程序设计》第6章学习总结

教材学习内容总结

面向对象中,子类继承父类,避免重复的行为定义,不过并非为了避免重复定义行为就使用继承。
程序代码重复在程序设计上就是不好的信号,多个类间出现重复的程序代码时,设计上可考虑的改进方法就是把相同的程序代码提升为父类。
在java中,继承时使用extends关键字,private成员也会被继承,子类必须通过父类提供的方法来存取。
java中,子类只能继承一个父亲,继承有个重要的关系,子类与父类间会有is-a的关系。
检查多态语法逻辑是否正确,方法是从=右边往左读:右边类型是不是左边类型的子类?如果不是就编译失败。
UML
多态 •继承可以复用代码,更大的用处是实现「多态」
封装是继承的基础,继承是多态的基础
「用父类声明对象引用,用子类生成对象」就有了多态
如果某方法块中没有任何程序代码操作,可以使用abstract标示该方法为抽象方法,这个方法不用撰写{}区块,直接“;”结束就好。
java中规定内含抽象方法的类,一定要在class前标示abstract,表示这是一个定义不完整的抽象类。
继承也符合DRY(Don't Repeat Yourself)原则
ISA与OCP原则,LSP原则
赋值: 「=」 右边 ISA 左边,否则要强制类型转换 •Role role1 = new SwordsMan()
SwordsMan swordsman = role1; //x
SwordsMan swordsman = (SwordsMan)role1; //ok

注意ISA是指功能上的

extends •Java中只有单一继承,也就是只能有一个父类

抽象方法、抽象类 •abstract
Java中有抽象方法的类一定是抽象类,但抽象类中的方法不一定都是抽象方法
抽象类不能使用new生成对象

继承语法细节
•public/package/protected/private
ppp
•super与this
•java.lang.Object •toString
•equals
•hashCode
•instanceof

Java中有public、protected与private三个权限关键字,但实际上有四个权限范围。
想取得父类中的方法定义,可以在调用方法前,加上super关键字。
如果想执行父类中某构造函数,可以使用super()指定。this()与super()只能选择一调用,而且一定要在构造函数第一执行。
如果class前使用了final关键字定义,那么表示这个类是最后一个了。
如果定义类时没有使用extends关键字指定继承任何类,那一定是继承java.lang.Object。在java中,任何类追溯至最上层父类,一定就是java.lang.Object.

其他(感悟、思考等)

参考资料

  • 《Java程序设计》

猜你喜欢

转载自blog.csdn.net/nemeziz/article/details/84544146