java_abstract&interface.md
抽象类和接口
抽象类
- 子类继承父类后往往会添加新的属性和方法,因此沿着继承链越向下继承的子类和方法越具体
越上层的祖先类越抽象 - java可以不定义方法体的方法,其方法体由子类根据具体情况实现,这样的方法被称为是抽象方法
- 抽象方法和抽象类的声明必须加上abstract 关键词
- 抽象方法的意义:加给子类一个约束
一个类如果满足下面的任意一个条件,则该类包含抽象方法且是抽象类
- 类显式地包含了一个抽象方法的声明
- 类的父类中声明的抽象方法未在类c中实现
- 类所实现的接口中有的方法没有类c中实现
- 只要是类中有一个未实现的方法(自己定义的或者是继承的),就是抽象类
- 一个不包含任何抽象方法的类,也可以定义为抽象类
只有实例方法可以声明为抽象类,抽象类不能被实例化,即不能用new关键词创建对象,
但是抽象类的父类可以是具体类,自己加入了抽象方法
接口
接口是公共静态常量和公共抽象实例方法的集合,接口是公共抽象实例方法的集合,接口是能力,规范,协议的反映
接口和类的区别:
- 不能定义构造函数
- 接口之间可以多继承,类可以同时实例化多个接口
- 和抽象类意义,不能new一个接口
接口中所有数据字段隐含为 public static final
接口中所有的方法隐含为public abstract
所以一些对类型的声明其实是可以省略,但是对于数据的初始化是一定要做的
1 | package A; |
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.