使用父类调用子函数

时间:2014-04-18 22:16:21

标签: java polymorphism parent-child

我有一个模拟商店的java程序。我有一个包含3个子类(游戏,书籍和电影)的Product类。我有一系列的产品,我想对数组中的每个项目做一些事情,具体取决于它的特定类型的子类。

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

我该如何解决这个问题?我知道我可以将一堆抽象函数放入Product类中,这些函数在子类中被重写,但我想知道是否有更简单的方法来执行此操作。

1 个答案:

答案 0 :(得分:0)

如果你想为每个子类使用不同的函数,你只需要使用“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
}

但是,只有当你真的必须使用具有不同名称和参数的函数时,才应该使用这些技术。

相关问题