在Java中,abstract
是一个关键字,用于修饰类、方法或接口。它表示被修饰的元素具有抽象性质,即没有具体的实现。
-
抽象类(Abstract Class):使用
abstract
关键字修饰的类被称为抽象类。抽象类不能被直接实例化,只能作为其他类的基类来继承。抽象类可以包含普通方法和抽象方法。- 普通方法:在抽象类中可以定义具体的方法实现。
- 抽象方法:在抽象类中可以定义没有具体实现的抽象方法,只有方法签名而没有方法体。子类必须实现(重写)所有父类中声明为抽象的方法。
-
抽象方法(Abstract Method):使用
abstract
关键字修饰的方法被称为抽象方法。它只有声明而没有具体的实现代码,并且必须位于抽象类或接口中。- 抽象方法只能存在于包含了
abstract
关键字声明的抽象 类或接口内部。 - 子类必须提供对应父类所有未实现(即声明为
abstract
的) 的 方法进行 实际 实现。
- 抽象方法只能存在于包含了
使用 abstract
的主要目标是让子类型提供特定行为并强制执行该行为。
下面是一个简单的示例,展示了抽象类和抽象方法的用法:
// 抽象类
abstract class Animal {
// 抽象方法
public abstract void makeSound();
// 普通方法
public void sleep() {
System.out.println("Animal is sleeping");
}
}
// 具体子类实现抽象方法
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Dog barks");
}
}
public class Main {
public static void main(String[] args) {
Dog dog = new Dog();
dog.makeSound(); // 输出: "Dog barks"
dog.sleep(); // 输出: "Animal is sleeping"
}
}
在上面的代码中,Animal
是一个抽象类,其中包含了一个抽象方法makeSound()
和一个普通方法sleep()
。Dog
类继承自Animal
并实现了父类中的抽象方法。
注意,由于抽象类不能被直接实例化,因此无法创建 new Animal()
的对象。但可以通过具体子类(如 Dog
)来创建对象,并调用其实现了的具体行为(如 makeSound()
和 sleep()
方法)。
最后的最后,可以给作者一个小小的却又大大的赞么,谢谢各位了!