gpt4 book ai didi

java - 访问父类(super class)对象 vector 中的子类方法

转载 作者:行者123 更新时间:2023-12-01 11:45:30 25 4
gpt4 key购买 nike

我正在使用 vector 来存储抽象父类(super class)的对象。我需要访问 vector 中每个对象的派生子类中的方法。我将使用 instanceof为了区分每个对象属于哪个子类。

我没有写入抽象类的权限。

目前我得到的编译错误是:

Error: cannot find symbol
symbol: method <mySubclassMethod>()
location: class <MyAbstractClass>

访问 vector 中每个对象的子类方法的最有效方法是什么?

最佳答案

您需要将对象强制转换为 instanceof 保护内部的子类。

if (obj instanceof MySubclass)
((MySubclass)obj).mySubclassMethod();

更广泛地说,如果该方法应在所有子类中可用,则应将其添加到抽象父类(super class)中。然后,当您在“未强制转换”的抽象父类(super class)对象上调用该方法时,它将使用正确子类中的实现。

public abstract class MySuperclass {
public abstract void mySubclassMethod();
...
}

public class MySubclass extends MySuperclass {
@Override
public void mySublcassMethod() { ... }
...
}
...

MySuperclass obj = [actually a Subclass];
obj.mySubclassMethod(); // uses the implementation from MySubclass

关于java - 访问父类(super class)对象 vector 中的子类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29172836/

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