1.抽象类
- 由来:利用抽象类为了更好的对类进行分类。如同不同的具体植物有不同的名字,但都可以统称为植物,“植物”这个抽象的词对所有具体植物进行了归纳。
java用来模拟现实世界,所有也存在抽象类。
- 抽象类通常用来作为一个类族的若干顶层类,用最底层的类表示现实中具体的事物,用最顶层的类表示该类族事物所具有的共性。
- 抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。
- 由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。
- 在Java中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口。
2.抽象方法
- 定义方法时,只有方法头,没有方法体,这样的方法称为抽象方法。
- 凡是没有方法体的方法都必须用abstract关键字声明为抽象方法。
- 含有抽象方法的类都必须声明为抽象类。
- 抽象类不一定有抽象方法,有抽象方法一定是抽象类。
- 子类如果没有把抽象类的所有抽象方法具体实现,则子类也必须声明为抽象类。
abstract class A //抽象类
{
abstract void f(); //抽象方法
}
abstract class B extends A
{
}
public class Test
{
public static void main(String[] args)
{
}
}
3.抽象类的使用
- 不能实例化抽象类,但可以定义一个抽象类的引用。
A a1 = new A();//error,不能生成抽象类的对象
A a1; //OK, a1只是A的一个引用
- 把一个子类对象的地址赋给抽象类的引用,然后通过抽象类的引用调用子类从父类继承过来的方法,即抽象类也可以实现多态。
假设A是抽象类,B是A的子类且实现了A中的所有抽象方法
A a1 = new B();