在以下情况下,请帮助我确定哪种方法是合理的。宾语:

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
  ...
}

10-04 11:49