封装 尽可能隐藏对象的内部实现细节,控制对象的修改及访问的权限。
访问修饰符:private 可将属性修饰为私有,仅本类可见不可直接访问私有属性、set/get方法,仅可访问公共方法
get/set方法是外界访问对象私有属性的唯一通道,方法内部可对数据进行检测和过滤
继承 java为单继承,一个类只能有一个直接父类,但可以有多级继承
访问修饰符 访问范围 继承性
private 本类可见 不可继承
(default) 本类+同一个包 同一个包中子类可以继承
protected 本类+同一个包+子类 可以继承
public 不受限制 可继承
构造方法:不可继承
组合/聚合服用原则 对于违反里氏代还原则的两个雷,由于不存在is a关系,所以不能定义继承,可以用组合的方式实现类的代码服用
重写(方法覆盖):子类用特殊的方法实现,替换弗雷继承给它的方法实现
方法名相同,参数列表相同,返回值类型相同,访问修饰符相同,范围更宽
super
用在构造方法中,指明调用父类哪个构造方法,必须出现在构造方法的第一行
如果一个构造方法的第一行不是super(…),也不是this(…)默认代码为super()
super. 引用 指向父类对象
用于访问父类被覆盖的属性和方法
多态 父类引用指向子类对象,子类对象可以赋值给父类引用
只能对引用调用引用类型中声明的方法
运行时,根据对象实际类型,调用子类覆盖之后的方法
对象类型不变,不能把一个对象强转为另一个对象,强制类型转换,用于父类引用赋值给子类引用,无法改变对象类型
引用 instanceof 类名 判断引用中的对象 是不是 类名,用作在强制类型转换之前进行类型判断,避免类型转换异常
多态的作用:把不同子类的对象统一看做是父类对象来处理,屏蔽了不同子类对象的差异,
多态用在参数上 m(A a) m方法允许A类或A类的子类对象作为实参
多态用在返回值上 A m() m方法返回的是A类或A的某个子类对象