Java继承问题

标签 java inheritance polymorphism

假设我有以下类(class):

class car1 {}
class car2 {}
class car3 {}
class car4 {}

支持我也有方法:queryCar()

private Object queryCar()
{
     int version = getCarVersion(); // returns car version
     if (version == 1)
         return new car1();
     else if (version == 2)
         return new car2();
     else if (version == 3)
         return new car3();
     ...
}

我还有另一种方法,doStuff()

private void doStuff()
{
     // psudocode
     if queryCar() returns a car1, I want to create a JPanel with an instance member of type car1
}

我如何完成上述伪代码? InstanceOf 用于确定类。然而,我只想要一个类在运行时自动生成那辆车。 (想到java中C++指针的模拟)

最佳答案

您应该使用继承来做您需要的事情。

abstract class Car {
    public Car queryCar();
    public int getCarVersion();
    public void doStuff() {
        JPanel j = new JPanel();
        j.add(new JLabel(queryCar().getCarVersion()));
    }
}

class Car1 extends Car {
    public Car queryCar() { return new Car1(); }
    public int getCarVersion() { return 1; }
}

关于Java继承问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4149226/

相关文章:

c++ - 标签调度对象是否实际实例化?

Java sleep 中断异常

Java:GarbageCollectorMBean.getCollectionTime 是否返回暂停时间或其他内容?

java - 我无法在 Android 8 Oreo(华为)中选择 PDF 文件

c# - 以 Child 类型作为参数的方法的继承类 : wrong method being called

java - final 和非 final 方法参数,它们在确定方法重载或覆盖时是否被视为不同?

java - Java 中数字的操作数 +

c++ - 基类成员函数内部的静态变量

design-patterns - 为什么是死亡钻石而不是死亡三角形

javascript - 当使用 apply() 和 call() 方法很容易继承时,为什么人们在 JavaScript 中使用原型(prototype)?