java - java中为什么要使用抽象类和抽象方法

标签 java abstract-class

任何人都可以为我提供一个在 Java 中使用抽象类和抽象方法的实际示例/场景吗?示例代码的解释将有助于从概念上理解它。谢谢

最佳答案

abstract class Car{
    public int drivenKm;
    //....

    public abstract void checkCar();
}
public class Volvo extends Car {
    public void checkCar() {
         checkWithVolvoTestSpecs1();
    }

    //you have some Volvo-specific tests implemented here 
    public void checkWithVolvoTestSpecs1(){
        //....
    }
}
public class BMW extends Car {
    public void checkCar() {
         checkWithBMWTest();
    }

    //you have some BMW-specific tests implemented here 
    public void checkWithBmWTest(){
        //....
    }
}

现在您可以获得包含宝马或沃尔沃的汽车列表。

有时实现通用的 checkCar() 方法是没有意义的,因为需要根据一些特定于生产者的检查来检查它们。因此,您应该标记类抽象以及方法。

标记类抽象可以防止您生成无法检查的非特定汽车。
标记方法抽象用于不强制实现一般的汽车检查以及强制任何派生类实现特定的汽车检查。
这意味着您可以为汽车列表中的每个对象调用 checkCar() 方法,因为可以保证不存在没有实现 checkCar() 的通用汽车对象以及每个特定对象(例如 BMW)列表中有该方法的实现。

public static void main() {
    List<Car> cars = new ArrayList<Car>();
    cars.add(new Volvo());
    cars.add(new BMW());
    foreach(Car c:cars)
        c.checkCar();
}

关于java - java中为什么要使用抽象类和抽象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43571178/

相关文章:

java - 使用 REST API 将 SAN 或本地磁盘添加到 Softlayer 中已配置的服务器?

c++ - 使用抽象类作为模板类型

typescript - 错误 TS1243 : 'async' modifier cannot be used with 'abstract' modifier

javascript - 如何使用采用接口(interface)实现类作为参数的方法编写 Flow 接口(interface)?

java - 排序字母数字字符串java

java - JLabel位置-JAVA GUI

java - 测试抽象类中的方法一次,而不是每次实现

c# - 使用 LINQ IEnumerable.ToDictionary() 时无法将类隐式转换为基类

从提供者获取任意数据的 Java 通用方法

java - 不使用否定按钮关闭警报对话框