如何解决如何使用抽象类的子类作为方法的参数?
我正在寻找一种有效的方法来使用一种方法启动不同类的对象。该方法每次启动的对象都不相同。该方法初始化的所有对象都继承自同一个抽象类。
例如,我们有一场国际象棋比赛。我们有一个抽象类(在这个例子中,我们将其命名为 AbstractPiece )用于棋子的整体功能,游戏中的每个棋子(国王、王后、车等)都有一个继承自抽象类的类。我们还有一个管理游戏的类。这个类有一个方法来启动游戏的棋子,它接收它必须初始化的棋子的颜色、位置和类型作为参数。由于每个部分都有不同的类,因此该方法必须使用我们要初始化的部分的构造函数来初始化对象。该方法应该看起来像这样。
public void initPiece(Position position,Color color,AbstractPiece typeOfThePieceWeWantToInitialise){
AbstractPiece piece = new typeOfThePieceWeWantToInitialise(color,position);
}
此代码示例不起作用,但想要实现的与这种情况类似。关于如何使某些东西能够实现与上面的代码示例相同的东西(如果可以的话)有什么想法吗?
解决方法
我假设您不关心子类具有抽象类没有的方法(即只是覆盖抽象类方法)。
相信您正在寻找的解决方案可能很简单:
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;
}
}
Class 对象本身并不代表一个类,它是它自己的类,它作为类的描述。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。