什么是抽象类?
抽象类是在面向对象编程中使用的一个概念。它是一个不能被实例化的类,只能作为其他类的父类来被继承。抽象类可以包含抽象方法和具体方法。
抽象方法是没有具体实现的方法,只有方法声明但没有方法体。子类继承抽象类后必须实现(重写)抽象方法才能创建实例对象。抽象方法用关键字 abstract
来修饰。
具体方法是在抽象类中有具体实现的方法。子类可以直接继承并使用这些具体方法,不需要再次实现。
抽象类和抽象方法的定义
抽象方法的定义格式:
public abstract 放回置类型 方法名(参数列表);
抽象类的定义格式:
public abstract class 类名{}
abstract class Animal {
public abstract void sound(); // 抽象方法
public void sleep() {
System.out.println("Animal is sleeping"); // 具体方法
}
}
class Dog extends Animal {
@Override
public void sound() {
System.out.println("Dog barks"); // 实现抽象方法
}
}
public class Main {
public static void main(String[] args) {
Animal animal = new Dog(); // 创建子类对象
animal.sound(); // 调用抽象方法
animal.sleep(); // 调用具体方法
}
}
抽象方法
将共性的行为(方法)抽取到父类之后。由于每一个子类执行的内容是不一样,所有,在父类中不能确定具体的方法体。该方法就可以定义为抽象方法。
抽象类
- 如果一个类中存在抽象方法,那么该类就必须声明为抽象类
- 抽象类不能实例化
- 可以有构造方法
- 可以有属性
定义抽象类和抽象方法的定义
- 抽取共性时,无法确定方法体,就把方法定义为抽象的。
- 强制让子类按照某种格式重写。
- 抽象方法所在的类,必须是抽象类。