如何使用抽象 class 的 subclasses 作为方法的参数?

How to use subclasses of an abstract class as a parameter of a method?

我正在寻找一种有效的方法来使用一种方法启动不同 class 的对象。方法每次启动的对象都不相同。该方法初始化的所有对象都继承自同一个抽象class.

例如,我们有一个国际象棋游戏。我们有一个抽象 class(对于这个例子,我们将其命名为 AbstractPiece )用于棋子的整体功能,游戏中的每个棋子(国王、王后、车等)都有一个 class它继承自抽象class。我们还有一个管理游戏的 class。这个 class 有一个启动游戏棋子的方法,它接收它必须初始化的棋子的颜色、位置和类型作为参数。由于每个部分都有不同的 class,因此该方法必须使用我们要初始化的部分的构造函数来初始化对象。该方法应该看起来像那样。

public void initPiece(Position position, Color color, AbstractPiece typeOfThePieceWeWantToInitialise){
    AbstractPiece piece = new typeOfThePieceWeWantToInitialise(color, position);
}

此代码示例无法正常工作,但想要实现的目标与这种情况类似。关于如何实现与上面的代码示例相同的功能(如果可行的话),有什么想法吗?

我假设你不关心子classes有抽象class没有的方法(我只是覆盖抽象classes 方法)。

相信您正在寻找的解决方案可能很简单:

public AbCLass initiate(int type, param one, param two)
{
   switch(type)
   {
      case 1:
      return new SubOne(one, two);
      break;
      case 2:
      return new SubTwo(one, two);
      break;
      ...
      default:
      return null;
   }
}

a Class 对象本身并不表示 class,它是它自己的 class,它充当 class.[=11 的描述=]