抽象类
概述
- Java语言中,用abstract 关键字来修饰一个类时,这个类叫作抽象类。
- 抽象类是它的所有子类的公共属性的集合,是包含一个或多个抽象方法的类。
- 抽象类可以看作是对类的进一步抽象。在面向对象领域,抽象类主要用来进行类型隐藏
作用
- 抽象类的作用在于将许多有关的类组织在一起,提供一个公共的类,而那些被组织在一起的具体的类作为其子类而派生出来。
- 抽象类刻画了公有行为的特征,并通过继承机制传送给它的派生类。
- 在 Java 中抽象类表示的是一种继承关系,一个类只能继承一个抽象类
特点
- 如果一个类包含抽象方法,那么该类必须是抽象类
- 除抽象类不能实例化对象之外;类的其它功能和普通类一样。
- 抽象类不能实例化对象,所以抽象类必须被继承,才能被使用
- 继承抽象类的子类必须重写父类所有的抽象方法。否则,该子类也必须声明为抽象类。
抽象类示例
public abstract class 类名称();
抽象方法
抽象方法的由来
- 如果要让某个方法的具体实现由它的子类确定,那么可以在父类中声明该方法为抽象方法。
- 抽象方法使用abstract 关键字来声明,抽象方法只包含一个方法名,而没有方法体。
- Java语法规定,包含抽象方法的类就是抽象类。
抽象方法示例
修饰符 abstract 返回值类型 方法名 (参数列表);
抽象类的使用
//定义抽象类
public abstract class AbstractDemo {
public AbstractDemo() {}
// 定义抽象方法
public abstract void demo();
}
//定义继承实现类
public class AbstractDemoSon extends AbstractDemo {
public AbstractDemo() {}
// 这里必须实现父类中的抽象方法,否则该类必须声明为抽象类
public void demo(){};
}
抽象类的使用细节
- 抽象类不能创建对象,只能创建 子类不为抽象类(就是继承的子类不是抽象类,实现了抽象方法的类) 的对象。
- 抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类。
- 抽象类的子类,必须重写抽象父类中所有的抽象方法,否则,编译无法通过而报错。除非该子类也是抽象类。