Java:声明为父类,但实例化为Child,然后使用Child中的unique方法

时间:2018-05-11 18:29:07

标签: java

我遇到了这个问题,因为我需要根据用户输入进行实例化。 考虑以下因素。

   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
   }

是否有针对此问题的解决方法?

1 个答案:

答案 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;
    }
}