在以下情况下,请帮助我确定哪种方法是合理的。宾语:
public class FunctionCall {
private String functionName;
private List<Exp> args;
...
}
在一种非常特殊的情况下,需要以某种方式识别对象。
可能的方法:
FunctionCall
类成为一个属性,但是由于该属性不应“全局”可见,因此会污染整个语义。SpecialFunctionCall
继承了FunctionCall
,并且在非常特殊的情况下可以使用instanceof
进行标识。这将是理想的,唯一怀疑它会滥用继承目的吗?任何其他建议都非常欢迎。
提前致谢。
最佳答案
您真正需要的是使用Java的三个主要原则中的两个,polymorphism
和“继承”结合在一起。多态是OOP的功能之一,它允许我们以不同的方式执行单个动作。这意味着可以根据特定的情况来改变对象的行为。
在您的情况下,您可以创建两个类,一个FunctionCall
和一个SpecialFunctionCall
。后一种情况应extends
第一种具有某种性行为。
然后,当出现特殊情况时,您将使用第二类,该第二类具有与第一类不同的行为。
这样,您可以保证父类FunctionCall
具有按情况使用的功能。
参见下面的使用示例:
public class SpecialFunctionCall extends FunctionCall{
//your special logic goes here
...
}