📜  Java中的抽象类(1)

📅  最后修改于: 2023-12-03 15:32:00.331000             🧑  作者: Mango

Java中的抽象类

在Java中,抽象类是指不能直接实例化的类。它通常用于作为其他类的基础。抽象类可以包含抽象方法和非抽象方法,而抽象方法是指没有实现的方法,需要在子类中被实现。下面介绍Java中抽象类的特点、语法和使用场景。

特点
  • 抽象类不能被实例化,只能被用作父类。
  • 抽象类可以包含抽象方法和非抽象方法。
  • 抽象方法只有方法签名,没有方法体,子类必须实现抽象方法。
  • 抽象类中的非抽象方法可以供子类直接调用或重写。
  • 子类继承抽象类时必须实现所有继承来的抽象方法或将子类也定义为抽象类。
语法

声明一个抽象类时,需要使用abstract关键字,如下所示:

public abstract class AbstractClass {
    // 抽象方法
    public abstract void doSomething();

    // 非抽象方法
    public void doSomethingElse() {
        // ...
    }
}

上述代码中,AbstractClass是一个抽象类,其中包含一个抽象方法doSomething()和一个非抽象方法doSomethingElse()

使用场景
  • 抽象类通常用于定义一组接口和规范,让子类去继承和实现。
  • 当多个类具有相同的属性和方法时,可以定义一个抽象类作为它们的父类,避免重复代码。
  • 抽象类可以提供一些公共的方法,供子类调用或重写。
  • 抽象类对于设计模式中的模板方法模式具有重要作用。
示例代码

下面的示例展示了如何在Java中使用抽象类:

// 抽象类
public abstract class Animal {
    public abstract void makeSound();
}

// 子类
public class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("汪汪汪~");
    }
}

// 子类
public class Cat extends Animal {
    @Override
    public void makeSound() {
        System.out.println("喵喵喵~");
    }
}

// 测试类
public class Test {
    public static void main(String[] args) {
        Animal dog = new Dog();
        Animal cat = new Cat();

        dog.makeSound(); // 输出:汪汪汪~
        cat.makeSound(); // 输出:喵喵喵~
    }
}

上述代码中,Animal是一个抽象类,包含一个抽象方法makeSound()DogCatAnimal的子类,实现了makeSound()方法。在Test类中,分别创建了一个Dog和一个Cat对象,并调用了它们的makeSound()方法。