抽象类
定义
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。简单来说,使用关键字abstract 修饰的类就叫做抽象类。
抽象类使用
示例代码,如下:
abstract class AbstractAnimal {
public AbstractAnimal() {
System.out.println("Init AbstractAnimal.");
}
static String name = "AbstractAnimal";
public abstract void eat();
public void run() {
System.out.println("AbstractAnimal Run.");
}
}
class Animal extends AbstractAnimal {
public static void main(String[] args) {
AbstractAnimal animal = new Animal();
animal.run();
System.out.println(animal.name);
animal.eat();
}
// 必须重写抽象父类方法
@Override
public void eat() {
System.out.println("Animal Eat.");
}
}
以上代码执行的结果:
Init AbstractAnimal.
AbstractAnimal Run.
AbstractAnimal
Animal Eat.
抽象方法
使用 abstract 关键字修饰的方法叫做抽象方法,抽象方法仅有声明没有方法体。如下代码:
public abstract void m();
抽象类的特性
- 抽象类不能被初始化
- 抽象类可以有构造方法
- 抽象类的子类如果为普通类,则必须重写抽象类中的所有抽象方法
- 抽象类中的方法可以是抽象方法或普通方法
- 一个类中如果包含了一个抽象方法,这个类必须是抽象类
- 子类中的抽象方法不能与父类中的抽象方法同名
- 抽象方法不能为 private、static、final 等关键字修饰
- 抽象类中可以包含普通成员变量,访问类型可以任意指定,也可以使用静态变量(static)