我遇到了这个问题,因为我需要根据用户输入进行实例化。 考虑以下因素。
public class Parent{
public void foo(){
System.out.println("foo");
}
}
public class Child extends Parent{
public void UniqChildMethod(){
System.out.println("I am unique")
}
}
我需要根据用户输入创建父或子。因此,如果输入为0,则表示创建母对象,如果输入为1,则创建子对象。由于将在此对象上调用一堆共享方法,因此我不想在if / else条件下两次编写相同的代码。所以我的解决方法是,我创建一个设置为null的父对象,并根据用户输入实例化。
问题来自何时:
public static void main(String argv[]) {
Parent obj = new Child();
obj.UniqueChildMethod(); <--- The method is underfined for the type parent
}
是否有针对此问题的解决方法?
答案 0 :(得分:0)
您可以使用switch
来解决此问题。
public static void main(String argv[]) {
Parent obj = null;
Scanner scanner = new Scanner(System.in);
int x = scanner.nextInt();
switch (x){
case 0 : obj = new Parent();
obj.foo();
break;
case 1 : obj = new Child();
((Child) obj).UniqChildMethod();
break;
default: obj = null;
}
}