我想知道如果您为某个参数创建一个带有空 setter 方法的父类,然后创建一些扩展该类的类,但并非所有类都具有该参数,会发生什么情况。在存在参数的类中调用 set 方法时,它会设置参数。而在参数不存在的类中,什么也不会发生,例如:
class Parent{
void setParam(String param){};
}
class A extends Parent{
String param;
public void setParam(String param){
this.param = param;
}
}
class B extends Parent{
String otherParam;
public void setOtherParam(String param){
this.otherParam = param;
}
}
因此,如果我们创建类 A,将其转换为 Parent,然后 try setParam()
,该属性param
将被设置。
Parent parent = new A();
parent.setParam("PARAM");
A{param='PARAM'}
如果我们对 B 类做同样的事情并尝试setParam()
什么都不会发生。
有人可以解释“幕后”发生的事情吗?我希望得到一个异常,因为我试图设置一个不存在的参数。
A 类重写了setParam
Parent 类的方法。即使您将 A 实例分配为 Parent 类,调用 a.setParam() 仍然表现为子类 A。这就是所谓的“子类多态性”。
B 类不会覆盖任何父级。所以 b.setParam() 只是调用 b 的父级的 setParam 方法,什么也没发生。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句