Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用父类调用子函数_Java_Polymorphism_Parent Child - Fatal编程技术网

Java 用父类调用子函数

Java 用父类调用子函数,java,polymorphism,parent-child,Java,Polymorphism,Parent Child,我有一个模拟商店的java程序。我有一个产品类,有3个子类(游戏、书籍和电影)。我有一个产品数组,我想根据子类的特定类型对数组中的每个项进行处理 我遇到的问题是,数组是一个产品数组,因此,数组中的项不能调用子类的函数,即使数组中的每个“产品”实际上是三个子类中的一个 我该如何解决这个问题?我知道我可以将一组抽象函数放入子类中重写的Product类中,但我想知道是否有更简单的方法来实现这一点。如果要为每个子类使用不同的函数,只需使用“instanceof”操作符并按如下方式进行类型转换: 例如,循

我有一个模拟商店的java程序。我有一个产品类,有3个子类(游戏、书籍和电影)。我有一个产品数组,我想根据子类的特定类型对数组中的每个项进行处理

我遇到的问题是,数组是一个产品数组,因此,数组中的项不能调用子类的函数,即使数组中的每个“产品”实际上是三个子类中的一个


我该如何解决这个问题?我知道我可以将一组抽象函数放入子类中重写的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
}
但是,只有当确实必须使用具有不同名称和参数的函数时,才应该使用这些技术