抽象方法
被 abstract 修饰的方法称为:抽象方法
public abstract void method(); // 抽象方法
特点:
- 抽象方法没有方法体
- 抽象方法只能存在于抽象类和接口中
抽象类
被 abstract 修饰的类称为: 抽象类
public abstract class Person {
public abstract void run();
}
特点:
- 抽象类不能被实例化
- 抽象类里面可以有抽象方法和非抽象方法
- 抽象类被继承时,必须重写所有的抽象方法
abstract class Person { // 定义抽象类Person
public abstract void run(); // 抽象方法run()
}
class Student3 extends Person { // 继承抽象类Person
@Override
public void run() { // 必须覆写父类run()方法,否则会报错
System.out.println("Student.run");
}
}
Student p = new Student();
p3.run(); // 运行结果:Student.run
- 抽象类中可以没有抽象方法,但包含了抽象方法的类必须被定义为抽象类
- 如果子类没有实现父类的所有抽象方法,子类必须被定义为抽象类
- 没有抽象构造方法,也没有抽象静态方法
- 抽象类中可以有非抽象的构造方法,创建子类的实例时可能调用