抽象类不能被实例化;抽象类可以有抽象方法,只需申明,无须实现;有抽象方法的类一定是抽象类;抽象类的子类必须实现抽象类中的所有抽象方法,否则子类仍然是抽象类;抽象方法不能声明为静态、不能被static、final修饰。
时间: 2024-08-14 09:04:44 浏览: 66
在Java中,抽象类确实具有以下特性:
1. **不可实例化**[^4]: 抽象类本身不能被创建对象,它主要用于为具有一些共同特性的其他类提供一个模板。这是通过在其声明中包含至少一个抽象方法(没有具体实现)来实现的。
2. **抽象方法**[^4]: 抽象方法是那些没有具体实现的方法,它们只声明方法签名,但不提供方法体。抽象方法通常用`abstract`关键字标记。
3. **抽象类与抽象方法的关系**[^4]: 类如果包含至少一个抽象方法,那么这个类就被定义为抽象类。抽象方法不需要实现,但它的子类必须提供实现,除非该子类也是抽象类。
4. **抽象方法的限制**[^4]:
- 它们不能被`static`修饰,因为`static`方法属于类而不是对象。
- 也不能被`final`修饰,因为`final`用于标识常量方法,而抽象方法需要重写。
例如:
```java
abstract class Animal {
abstract void makeSound(); // 抽象方法,没有实现
}
class Dog extends Animal {
@Override
public void makeSound() { // 必须实现父类的抽象方法
System.out.println("Woof!");
}
}
```
在这个例子中,`Animal`是抽象类,`Dog`继承自`Animal`并实现了`makeSound()`方法。
阅读全文