gpt4 book ai didi

java - 在父类(super class)和子类中实现同名但不同实现的方法

转载 作者:行者123 更新时间:2023-12-01 23:16:48 25 4
gpt4 key购买 nike

我有一个父类(super class)和子类,并且我希望能够根据是否为父类(super class)实例或子类实例调用该方法来调用该方法的特定实现。我计划有一个 if 条件来使用 Java 中的 instanceof 运算符来检查这一点。我想知道是否有其他方法(可能是泛型?)来比使用这个 if 条件更好地实现这一点 - 无论如何,这看起来并不简洁。另外,使用这种方法,当我必须将 objSuperClass 类型转换为 SubClass 类型时,我必须进行不安全的类型转换。请提出建议。

void doSomething (SuperClass obj) {
// Works the same way for super and sub class
int p = obj.getX1(obj);
int q = obj.getX2(obj);

int implementationSpecificVariable;
// choose behavior based on the actual class
if (obj instanceof SuperClass) {
implementationSpecificVariable = doForSuper(obj);
} else if (obj instanceof SubClass) {
implementationSpecificVariable = doForSub((SubClass) obj);
}
}

最佳答案

为此使用 OOP!

class SuperClass {
public void doSomething() { /* implementation for SuperClass */ }
}

class SubClass extends SuperClass {
@Override
public void doSomething() { /* implementation for SubClass */ }
}

现在,每当您引用 SuperClassSubClass 的实例时,对其调用 doSomething 将调用第一个或第二次实现:

SuperClass obj = ...; // create instance of SuperClass or SubClass
obj.doSomething();

关于java - 在父类(super class)和子类中实现同名但不同实现的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21100051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com