Java 用父类调用子函数
我有一个模拟商店的java程序。我有一个产品类,有3个子类(游戏、书籍和电影)。我有一个产品数组,我想根据子类的特定类型对数组中的每个项进行处理 我遇到的问题是,数组是一个产品数组,因此,数组中的项不能调用子类的函数,即使数组中的每个“产品”实际上是三个子类中的一个Java 用父类调用子函数,java,polymorphism,parent-child,Java,Polymorphism,Parent Child,我有一个模拟商店的java程序。我有一个产品类,有3个子类(游戏、书籍和电影)。我有一个产品数组,我想根据子类的特定类型对数组中的每个项进行处理 我遇到的问题是,数组是一个产品数组,因此,数组中的项不能调用子类的函数,即使数组中的每个“产品”实际上是三个子类中的一个 我该如何解决这个问题?我知道我可以将一组抽象函数放入子类中重写的Product类中,但我想知道是否有更简单的方法来实现这一点。如果要为每个子类使用不同的函数,只需使用“instanceof”操作符并按如下方式进行类型转换: 例如,循
我该如何解决这个问题?我知道我可以将一组抽象函数放入子类中重写的Product类中,但我想知道是否有更简单的方法来实现这一点。如果要为每个子类使用不同的函数,只需使用“instanceof”操作符并按如下方式进行类型转换: 例如,循环中的某个位置:
if(items[i] instanceof Game) {
Game g = (Game)items[i];
g.SomeGameSpecificFunc();
} else if(items[i] instanceof Book) {
//...
}
您还可以通过反射获得当前对象类名称的字符串,但这相当慢:
String className = items[i].getClass().toString();
//in Java 7+
switch(className) {
case "Book":
//do something
break;
//etc
}
但是,只有当确实必须使用具有不同名称和参数的函数时,才应该使用这些技术