接口
概念:因为每个类只有一个直接的父类,若一个类同时有两个父类,如:带橡皮的铅笔
作用:
1.拓展功能
2.定义约束规范
3.程序的解耦(低耦合,高内聚)
定义格式:
interface 接口名 {
}
实现接口的格式:
class 类名 implement 接口{
}
接口注意的细节:
1.接口其实是特殊的类
2.接口中的成员变量都是属于常量,默认的修饰符是public static final
3.接口中的方法都是抽象的方法,默认的修饰符是public abstract void
4.接口是不能用于创建对象的
5.接口没有构造方法,接口的变量都是常量,接口的方法都是抽象的方法
6.如果一个非抽象类实现一个接口时,必须实现接口中的所有方法
接口与接口之间的关系
细节:
1. 一个接口是可以继承多个接口的
接口与类之间的关系
细节:
1. 非抽象类实现一个接口时,必须要把接口中所有方法实现
2. 一个类可以实现多个接口
疑问:java支持多实现接口为什么不能支持多继承呢?
因为如果支持多继承的话,那么假设多个父类中有相同的成员,那么子类就不知道到底用哪一个,但是接口只需要使用实现的那一个即可
3. 抽象类实现接口的时候,可以实现接口中的方法,也可以不实现接口的方法
多态
概念:
父类的引用类型变量指向了子类的对象或者是接口的引用类型变量指向了接口实现类的对象(一个对象具有多种形态)
前提:
必须存在继承或者实现关系
注意的细节:
1.多态情况下,子父类存在着同名的成员变量时,默认会访问父类的成员变量
2.多态情况下,子父类存在着同名的非静态函数时,会默认访问子类的成员函数
3.多态情况下,子父类存在着同名的静态函数时,会默认访问父类的成员函数
4.多态情况下,不能访问子类特有的成员
总结:
多态情况下,子父类存在同名的成员时,默认都是会访问父类的成员,只有在非静态函数下会访问子类的成员变量
应用场景
- 用于形式参数的时候,可以接收更多类型的参数
- 多态用于返回值类型的时候,可以返回多个类型
- 多态情况下,不能访问子类特有的成员
好处
- 提高拓展性