这可能(肯定会)听起来很愚蠢,但我被困住了,我找不到解决问题的合适方法。我有一个超类和两个子类扩展它。在基于条件的父类上,我想从两个类中的任何一个调用该方法。这是在一个循环中,所以我决定不做同样的检查,而是做一次检查,从超类创建一个对象,然后将该对象更改为两个子类之一。IE
public class Parent{
public void method() {
Parent object=new Parent();
if(a==b) {
object=new Child_A();
}else {
object=new Child_B();
}
for() {
object.method();
}
}
public void method() {
//empty method. need it just to compile
}
}
public class Child_A extends Parent{
public void method() {
//do something useful
}
}
public class Child_A extends Parent{
public void method() {
//do something useful
}
}
我必须编写 Parent.method(),因为否则编译会抱怨 Parent 类上没有 method() 方法。因此,调用的方法不是孩子之一,而是父母方法。
我读过需要将对象直接分配给类,例如Childen_A object=new Childen_A. 问题是我想对两种情况 ( object.method()) 使用相同的命令,无论它指的是哪个类。奇怪的是,在调试期间,我看到该对象的类型为 Child_A,但调用了 super 方法。
我知道解决方案是创建两个不同的对象,每个子类一个,但这会使我的代码更难看,我将不得不在循环中使用 if 语句。所以正确的方法必须是
public void method() {
for() {
if(a=b) {
Child_A object=new Child_A();
object.method();
}else {
Child_B() object=new Child_B();
object.method();
}
}
}
有没有办法避免循环内的 if 语句?谢谢
holdtom
幕布斯6054654
随时随地看视频慕课网APP
相关分类