`abstract` 是一个关键字,用于修饰 类和 方法,具体说明如下:
抽象类(Abstract Class)
当一个类被 `abstract` 修饰时,这个类被称为抽象类。抽象类不能被实例化,也就是说,不能直接创建抽象类的对象。
抽象类可以包含抽象方法和非抽象方法。抽象类的主要作用是为其子类提供一个公共的基础,子类必须实现抽象类中的所有抽象方法,否则子类也必须声明为抽象类。
抽象类可以有构造方法,但这个构造方法不是为了直接创建对象,而是为了在子类实例化时调用父类的构造方法。
抽象方法(Abstract Method)
当一个方法被 `abstract` 修饰时,这个方法被称为抽象方法。抽象方法只有方法的声明,没有方法的实现,实现部分以分号(;)代替。
抽象方法必须在抽象类中声明,并且必须被子类实现(覆盖)。如果一个类包含至少一个抽象方法,那么这个类必须被声明为抽象类。
抽象方法代表了某种标准或功能,子类在实现抽象方法时,必须遵循相同的接口和定义。
语法示例
修饰类:
```java
public abstract class Animal {
// 抽象类不能被实例化
}
```
修饰方法:
```java
public abstract void makeSound(); // 抽象方法只有声明,没有实现
```
注意事项
`abstract` 不能用来修饰属性、构造器、私有方法、静态方法、final修饰的方法或final类。
如果一个类继承了一个抽象类,那么它必须实现抽象类中的所有抽象方法,否则这个类也必须声明为抽象类。
抽象方法可以在子类中以多态方式被调用,即子类可以覆盖(实现)父类中的抽象方法。
通过使用 `abstract` 关键字,可以定义出一些未完成的类和方法,强制子类去实现这些方法,从而确保所有子类在行为上的一致性和可扩展性。