多态就是多种形态
直接表现就是:方法重载与方法重写
方法重写:
子类重写父类的方法,可以改变访问修饰符,但只能改为更广的范围
(public>protected>默认>private)
方法重载:
类中的多个方法具有相同的方法名,不同的参数列表(参数的个数、类型不同),和参数的名称、函数的返回值没有关系
抽象方法:
用abstract关键字修饰,只有方法声明,没有方法的实现
抽象类:
由abstract关键字修饰的类
特点:抽象类只能声明,不能创建。
创建的是抽象类的实现类
构造方法和static方法不能是抽象的
关系:抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
子类继承抽象类的三种方式
1. 实现抽象类的所有抽象方法,自己是个正常类
2. 不实现抽象方法,把自己定义为抽象类
3. 实现了部分抽象方法,依然把自己定义为抽象类
什么情况使用抽象类?
父类中的某个方法不包含任何业务逻辑(空方法),或者说父类的方法的出现就是为了让子类重写,那么就把这个方法定义为抽象方法,类定义为抽象类。
接口:是一系列抽象方法的声明
接口中的抽象方法可以省略abstract关键字
特点:
- 接口只能声明不能创建,创建的是接口的实现类
- Java是单继承,但是一个类可以实现多个接口
- 接口也可以继承接口,并且一个接口可以继承多个接口
- 接口中不能定义变量,只能定义常量,可以省略static final
- 接口中的abstract关键字可以省略
项目中的特殊接口:
常量接口:此接口中不定义方法,只定义常量
标识接口(空方法):没有定义任何方法
单方法接口:只有一个方法