20145338《Java程序设计》第4周学习总结
教材学习内容总结
第六章 继承与多态
面向对象中,子类继承父类,避免重复的行为定义,不过并非为了避免重复定义行为就使用继承。
程序代码重复在程序设计上就是不好的信号,多个类间出现重复的程序代码时,设计上可考虑的改进方法就是把相同的程序代码提升为父类。
在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.
第七章 接口与多态
何谓接口
•接口(interface)定义行为
•implements
对于“定义行为”,可以使用interface关键字定义,接口中的方法不能操作,直接标示为abstract,而且一定是public。类要操作接口,必须使用implements关键字。
接口语法细节
•接口中的public abstract可以省略
•接中可以使用extends继承接口,并且可以继承多个接口
•匿名内部Lambda •JDK8 前在匿名内部类中访问局部变量,则该局部变量必须为final
使用interface来定义抽象的行为外观,方法要声明为public.abstract,无须切不能有操作。为了方便,也可以省略public sbstract,编译程序会协助补齐。
•emum
emue定义了特殊的类,继承自java.lang.Enum。
enum中列举的常数,实际上是public static final,且为枚举类型实例。
教材学习的问题与解决
照着书上的代码抄 有很多内容还不是很懂。
其他(感悟、思考等,可选)
越往后学习就会越吃力,特别是一周搞懂两章的内容会比较困难 要努力搞懂。还是要多敲代码。
学习进度条
目标 5000行 30篇 400小时
第四周350 /350 4/4 30/30