封装
- 该露的露,该藏的藏
- 程序设计追求
“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合指仅暴露少量的方法给外部使用。
- 程序设计追求
- 封装(数据的隐藏)
- 通常应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。
属性私有,方法公开:private、public、get/set
继承
Java中只有单继承没有多继承.
继承关系的俩个类,一个为子类(派生类).一个为父类(基类)。子类继承父类,使用关键字extends来表示。
子类继承父类的属性和方法,但是不能直接访问父类的私有属性。
Object类是所有类的父类。
super
super();调用父类的构造方法,必须在子类的构造方法的第一个,不写也会隐式添加。
super()和this()不能同时出现在子类的构造方法中。
方法的重写
这些方法不能被重写:
- static方法。属于类,它不属于实例
- final常量
- private方法
方法的重写只跟方法有关,跟属性无关。
假设B类继承自A类,print是静态方法:
A a = new A();
B b = new A();
a.print();//调用A类的方法
b.print();//调用B类的方法
说明静态方法的调用只和左边的类有关。
非静态方法,使用override重写,调用的是右边对象的方法。
重写需要有继承关系。子类重写父类的方法。
- 方法名必须相同
- 参数列表列表必须相同
- 修饰符范围可以扩大但不能缩小public>protected>Default>private
- 抛出的异常范围,可以被缩小,但不能扩大:
多态
即同一方法可以根据发送对象的不同而采用多种不同的行为方式。
一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多。
多态存在的条件:
- 有继承关系
- 子类重写父类方法
- 父类引用指向子类对象
注意:多态是方法的多态,属性没有多态性。
instanceof和类型转换
instanceof判断两个类是否有上下级继承关系,返回布尔类型。
类型转换:
- 父类引用指向子类对象
- 把子类转换为父类。向上转型,可能会丢失方法
- 把父类转换为子类。向下转型:强制转换