嗨,大家好,我是Java的新手,仍然在学习OOP原理。直接问这个问题。因此,我有一个抽象类和两个从其继承的类。看起来像这样:
public abstract class A { ... }
public class B extends A {
...
void methodB() { ... }
public class C extends A {
...
void methodC() { ... }
现在我做:
A a = null;
if (that)
a = new B();
else
a = new C();
在这一点上,我想做一个a.methodB();
或a.methodC();
两个(当然不是两个都做,因为我创建了一个孩子), 但是我什么都不做。
这是您可以做到的:
if (a instanceof B) ((B)a).methodB();
else if (a instanceof C) ((C)a).methodC();
但这是一种反模式,我建议在中将定义methodA
为一种abstract
方法A
abstract
class
。B
并C
实现两者,然后您可以轻松调用,然后将调用a.methodA()
的正确实现methodA
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句