gpt4 book ai didi

Java:如果这是instanceof Something,则显示仅属于Something的变量?

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

这里的所有内容都已重命名并简化。

我有一个父类 (normalThing),其方法显示有关实例的一些数据,另一个类 (specialThing) 扩展父类以包含另一个实例变量 (addedPrice)。

我希望我的显示方法能够说明该实例是否是一个specialThing,如果是,则显示addedPrice。但是因为addedPrice只属于specialThing,所以我不知道如何编码!

void displayInfo(){
StringBuilder d = new StringBuilder("Am I special? ");

if(this instanceof specialThing){
d.append("Yes, so I cost an extra " + this.addedPrice);
//No, I didn't expect that to work, but I had hope
}
else d.append("Nope.");
JOptionPane.showMessageDialog(null, d);
}

有什么方法可以做到这一点,而无需在 normalThing 类中创建“could-be-addedPrice”变量?

最佳答案

您可以通过在子类中适本地重写 displayInfo 来实现此目的。这是一个更好的方法,因为父类不应该尝试知道它的子类是什么,因为子类的数量及其名称不受父类的控制。人们可以以意外/不可预测和不受控制的方式扩展父类。如果您定义 displayInfo 契约并强制子类来实现它,它将很好地工作。子类的数量并不重要。只要 displayInfo 按照契约(Contract)实现,OOP 就会处理剩下的事情:-)

关于Java:如果这是instanceof Something,则显示仅属于Something的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21744551/

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