自己接触Java的时间也不长,在学习到Java内容中的抽象类和接口的内容时,说一说自己的认识吧。
什么是抽象类和接口?
抽象类即是包含抽象方法的类,抽象方法即是使用了abstract关键字修饰,仅有声明没有方法体的方法。即:
public abstract void m();
如果一个类包含一个或者多个抽象方法,该类必须得限定为抽象的。但是抽象类可以不包含抽象方法。比如
public abstract class Animal(){
void eat(){
System.out.println("吃肉");
}
// abstrct void sleep(); 抽象类也可以没有抽象方法
}
抽象类的特点
- 抽象类是由子类具有相同的一类特征抽象而来,也可以说是其基类或者父类
- 抽象方法必须为 public 或者 protected(因为如果为 private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为 public
- 抽象类不能用来创建对象
- 抽象方法必须由子类来实现
- 如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法,如果子类没有实现父类的抽象方法,则必须将子类也定义为抽象类
- 抽象类还是很有用的重构工具,因为它们使得我们可以很容易地将公共方法沿着继承层次结构向上移动
抽象类和接口的区别