抽象:将一类事务的共同特征总结出来构造类的过程(抽象出类的属性和行为)
继承:由已有的类产生新类的过程,让某个类型的对象获得另一个类型的对象的属性和方法,实现方式有两种:
- 实现继承:直接使用基类的属性和方法,无需额外编码
抽象类的继承必须实现抽象方法,其他类的继承也可对父类方法进行重写
public class A extends B{
}
- 接口继承:使用属性和方法的名称,子类必须提供具体的实现
public class A implements B{
}
封装:隐藏对象的属性和实现细节,仅对外提供必要的访问接口
封装原则
- 将不需要对外提供的内容都隐藏起来
- 把所有属性隐藏起来,对外提供公共接口(get()、set()方法)
多态性:允许不同类型的对象对同一消息作出不同的响应(重写),也允许同一对象根据自身条件的不同对同一消息作出不同的响应(重载)
- 方法的重载和重写(覆盖)
重载和重写的区别:
- 重载是静态多态,同名方法,不同参数列表(参数个数、顺序、类型),是对同一个类中的方法实现态,不同参数执行不同方法。
- 重写是动态多态,子类重写父类的方法,必须同名,同参数,重写时必定存在继承,没有继承就没有重写。
- -
注意:
- private方法不能重写,final 方法不能重写
- 子类重写方法的权限>=父类中的访问权限(权限顺序:public>protected>默认>private)
- 重写方法不能抛出新的异常或者比重写方法声明更加宽泛的异常(例:父类抛出IOException,则子类不能抛出Exception,只能抛出IOException及其子异常)
- 重载方法必须改变参数列表,不能以返回类型作为区分标准
类型 | 参数列表 | 返回类型 | 异常 | 访问权限 |
---|---|---|---|---|
重载 | 必须修改 | 可以修改 | 可以修改 | 可以修改 |
重写 | 不能修改 | 不能修改 | 减少或删除(不能扩大) | 不能降低 |
1. 用父类的引用指向子类的具体实现,可随时更换为其他子类
对象转型:
父类引用指向子类对象——安全
子类引用指向父类对象——不安全(运行报错)