20165309 2017-2018-2《Java程序设计》第四周学习总结
教材知识总结
第五章 子类与继承
子类与父类
- 继承是一种由已有的类创建新类的机制。
- Java的子类只能有一个父类。
- 声明子类:
class 子类名 extends 父类名 {
…
}
- Java的类按继承关系形成树形结构,其中根结点是Object类(在java.lang包中)。如果一个类(除了Object类)的声明中没有使用extends关键字,这个类被系统默认为是Object的子类。
子类的继承性
-
子类和父类在同一包中的继承性
继承了其父类中不是private的成员变量和方法,访问权限保持不变。
-
子类和父类不在同一包中的继承性
继承了父类的protected、public成员变量和方法,访问权限保持不变。
-
继承关系的UML图
用空心三角形从子类指向父类。
-
protected 的进一步说明 P115
子类与对象
-
创建子类对象时,子类总是按层次结构从上到下的顺序调用所有超类的构造函数。如果继承和组合联用,要先构造基类的构造函数,然后调用组合对象的构造函数(组合按照声明的顺序调用)。
-
如果父类没有不带参数的构造方法,则在子类的构造方法中必须明确的告诉调用父类的某个带参数的构造方法,通过super关键字,这条语句还必须出现在构造方法的第一句。
-
关于instanceof运算符:当左面的操作元是右面的类或其子类所创建的对象时,instanceof运算的结果是true,否则是false 。
成员变量的隐藏与方法重写
- 所声明的成员变量的名字和从父类继承来的成员变量的名字相同时,子类就会隐藏所继承的成员变量。(要注意到P118注释内容)
- 子类通过方法的重写可以隐藏继承的方法,子类通过方法的重写可以把父类的状态和行为改变为自身的状态和行为。
- 子类创建的一个对象,如果子类重写了父类的方法,则运行时系统调用的是子类重写的方法,否则调用的是子类继承的方法。
super 关键字
-
用super操作被隐藏的成员变量和方法
-
使用super调用父类的构造方法(super必须是子类构造方法中的头一条语句)
final 关键字
- final类不能被继承
- 如果用final修饰父类中的一个方法,那么这个方法不允许子类重写
- 如果成员变量或局部变量被修饰为final,那它就是常量,在声明常量时必须指定该常量的值。
对象的上转型对象
上转型对象相当于子类对象的一个“简化”对象。
继承与多态
多态性就是指父类的某个方法被其子类重写时,可以各自产生自己的功能行为。
abstract 类和 abstract 方法
- abstract方法必须是实例方法
- abstract类中可以有abstract方法,也可以没有
- abstract类不能用new运算符创建对象
- abstract类的子类 P129
- abstract类的对象作上转型对象,可以调用子类重写的方法。
面向抽象编程
让类中每种可能的变化对应地交给抽象类的一个子类去负责,避免所设计的类依赖于具体实现。
开—闭原则 对扩展开放,对修改关闭。(P135)
第六章 接口与实现
接口
- 接口声明
interface 接口的名字
-
接口体
-
常量的声明(没有变量,static常量)+抽象方法
-
访问权限一定都是public
-
实现接口
-
类实现接口
使用关键字implements,如:
class A implements Printable,Addable
-
重写接口中的方法
实现接口的非抽象类:去掉abstract修饰符给出方法体,而且方法的访问权限一定要明显地用public修饰。
-
接口可以被继承(用extends声明)
-
通过import语句引入包中的类和包中的接口:
import java.io.*;
接口回调 P149
可以把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量中,那么该接口变量就可以调用被类重写的接口方法(通知相应的对象调用这个方法)。
理解接口
- 接口可以抽象出重要的行为标准,该行为标准用抽象方法来表示
- 可以把实现接口的类的对象的引用赋值给接口变量,该接口变量可以调用被该类实现的接口方法,即体现该类根据接口里的行为标准给出的具体行为
接口与多态 P152
不同的实现方式
接口参数
接口参数可以回调类实现的接口方法
abstract 类与接口的比较
- abstract类和接口都可以有abstract方法
- 接口中只可以有常量,不能有变量;而abstract类中即可以有常量也可以有变量
- abstract类中也可以有非abstract方法,接口不可以
面向接口编程
- 可以通过在接口中声明若干个abstract方法,表明这些方法的重要性,方法体的内容细节由实现接口的类去完成
- 核心思想:使用接口回调
代码托管
在虚拟机里做之后就不出现信号13的错误了,虽然那个问题我还是没有解决....
IDEA的下载
想要注册码的可以参考
调试仍在学习...
课下测试错题
1.
2.
其实它是按240算的,给的选项里没有答案...
3.
4.
5.
6.
我认为A选项定义的是char类型数组,赋值是String类型,所以会报错...吧...?
7.