抽象类
抽象类要注意的细节:
- 如果一个方法没有方法体,那么该方法必须用abstract修饰。
- 如果一个类含有抽象方法,那么这个类肯定是一个抽象类或者接口。
- 抽象类不能创建对象。
- 抽象类是含有构造方法的。
- 抽象类可以存在抽象方法和非抽象方法。
- 抽象类可以不存在抽象方法。
- 非抽象类继承抽象类的时候,必须要把抽象类中所有抽象方法实现。
abstract不能与以下关键字同时使用:
- abstract不能与static共同修饰一个方法。
- 不能与private共同修饰一个方法。
- 不能与final关键字共同修饰一个方法。
接口
接口的作用:
- 程序解耦。(???)
- 定义约束规范。
- 拓展功能。
接口要注意细节:
- 接口中成员变量都是常量,默认的修饰符是public static final。
- 接口中的方法全部都是抽象方法,默认的修饰符是public abstract。
- 接口不能创建对象。
- 接口没有构造函数。
- 非抽象类通过implements实现接口的时候,必须要把接口中所有方法实现。
多态
多态:
- 父类的引用类型变量指向了子类的对象,或者是接口的引用类型变量指向了接口实现类的对象。
多态要注意的细节:
- 多态情况下,如果子父类存在同名的成员变量时,访问的是父类的成员变量。
- 多态情况下,如果子父类存在同名的非静态函数时,访问的是子类的成员函数。
- 多态情况下,如果子父类存在同名的静态函数时,访问的是父类的成员函数。
- 多态情况下,不能访问子类特有的成员。
多态的应用:
- 多态形参类型用于的时候,可以接收更多类型的数据。
- 多态用于返回值类型的时候,可以返回更多类型的数据。