[英]Java: Declare as a parent class, but instantiate as Child, then using the unique method in Child
我遇到了这个问题,因为我需要根据用户输入实例化。 考虑以下。
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,则创建子级。 由于将在此对象上调用一堆share方法,因此我不想在if / else条件下两次编写相同的代码。 因此,我的解决方法是,创建一个设置为null的父对象,并根据用户输入实例化该对象。
这是问题出现的时间:
public static void main(String argv[]) {
Parent obj = new Child();
obj.UniqueChildMethod(); <--- The method is underfined for the type parent
}
有没有解决此问题的方法?
如果您知道您的Parent
确实是Child
对象的引用,则可以将其强制转换并调用child方法:
((Child) obj).UniqueChildMethod();
在典型的应用程序中,应在类之前检查对象类型,以避免ClassCastException
:
if (obj instanceof Child) {
Child childObj = (Child) obj;
childObj.UniqueChildMethod();
}
您可以使用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;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.