继承
概念
1、继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。
2、继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
子类父类关系
权限修饰符
类内部 | 本包 | 子类 | 外部包 | |
---|---|---|---|---|
public | √ | √ | √ | √ |
protected | √ | √ | √ | × |
default | √ | √ | × | × |
private | √ | × | × | × |
多态
绑定
当通过对象变量调用函数的时候,调用哪个函数这件事叫做绑定:
1、静态绑定:根据变量的声明类型来决定。
2、动态绑定:根据变量的动态类型来决定。
在成员函数中调用其他成员函数也是通过this这个对象变量来调用。
Java语言默认所有绑定都是动态绑定。
造型Cast
造型:用括号围起类型放在值的前面,对象本身并没有发生任何的变化,要注意和“类型转换”的区别,造型不是“类型转换”。
类型转换:
int i = (int)10.2 ;
注意:
1、类型转换和造型是不同的,类型转换的值会发生变化。
2、Java中不存在对象对对象的赋值。
3、父类的对象不能赋值给子类的变量。
4、赋值运算符的作用在于“指向”。
向上造型:拿一个子类的对象,当作父类的对象来使用。
向上造型是默认的,不需要运算符。
向上造型总是安全的。
覆盖Override
1、子类和父类中存在名称和参数表完全相同的函数,这一对函数构成覆盖关系。
2、通过父类的变量调用存在覆盖关系的函数时,会调用变量当时所管理的对象所属的类的函数。
多态变量
1、Java的对象的变量是多态的,他们能保存不止一种类型的对象。
2、他们可以保存的是声明类型的对象,或声明类型的子类的对象。
3、当把子类的对象赋给父类的变量的时候,就发生了向上造型。
消除代码复制
代码复制意味代码质量的不良,意味着将来的维护比较难,不具有可扩展性
- 消除代码复制
1、代码复制是设计不良的一种表现。
- 增加可扩展性
1、可以运行的代码不等于良好的代码。
2、对代码做维护的时候最能看出代码的质量。
3、用接口来实现聚合
- 用封装来实现聚合
1、类和类之间的关系称作耦合
2、耦合越低越好,保持距离是形成良好代码的关键。
- 保持恰当的接口,用容器来实现灵活性
- 以“框架”+“数据”来提高可扩展性
1、将程序的硬编码尽可能解成“框架”+“数据”的结构。
2、命令的解析是否可以脱离 “if - else” ?
3、定义一个Handler来处理命令。
4、用Hash表来保存命令和Handler之间的关系。