Java基础(二)抽象类、普通类、接口区别
1. 抽象类
- 不能直接实例化
- 可以不含抽象方法,即可以做方法的声明,也可以做方法的实现。
- 可以定义普通变量
- 可以有构造函数
- 不能使用final修饰,定义抽象类就是为了继承,使用final修饰自相矛盾
- 抽象类要被子类继承extends
- 类只能单继承
- 子类必须实现父类的全部抽象方法,若不能全部实现,该子类只能是抽象类
- 方法:
- 抽象类中的方法可以使用任意访问修饰符
- 抽象方法要被实现,不能是静态的,不能是私有的
- 抽象方法只能声明,不能实现
- 可以有main方法
2. 普通类
- 可以直接实例化
- 不能包含抽象方法
- 方法可以使用任意访问修饰符
3. 接口类
- 不能实例化,没有构造函数,接口必须指向实现所有接口方法的类对象
- 接口要被子类实现implements,一个类可以实现多个接口
- 实现类必须实现全部接口方法,若不能全部实现,该类只能定义为抽象类
- 接口中方法
- 只能使用默认public修饰
- 只能做方法的声明
- 接口类只能定义公共静态常量,默认public static final
- 接口中声明的都是抽象方法,默认public abstract
- 开发中经常把常用变量定义在接口中作为全局变量使用,访问时使用接口名.变量名
- 接口不能继承其它类,但可以继承接口类
4. Note:
- 接口和抽象类都用来抽象具体对象,接口抽象级别更高
- 抽象类主要用于抽象级别,接口主要是抽象功能
- 若方法需要有一个默认实现,用抽象类
- 想实现多继承,必须用接口
- 抽象类的访问速度比接口快,因为不需要找实现方法
- 抽象类除了不能被实例化外,与普通类没有区别