Java 如果期望父类,但不允许用户实例化父类,我如何接收子类作为参数?
我是java编程新手,我想得到一些帮助来解决这个问题,下面的代码来说明我的问题,我有一个父类Person,我创建了3个子类Player、Arbiter和Trainer,然后我可以通过期望Person类对象将这3个类中的任何一个作为参数传递给另一个类GameJava 如果期望父类,但不允许用户实例化父类,我如何接收子类作为参数?,java,class,encapsulation,Java,Class,Encapsulation,我是java编程新手,我想得到一些帮助来解决这个问题,下面的代码来说明我的问题,我有一个父类Person,我创建了3个子类Player、Arbiter和Trainer,然后我可以通过期望Person类对象将这3个类中的任何一个作为参数传递给另一个类Game public class Game { private Person member; public Game (Person member){ this.member = new Person();
public class Game {
private Person member;
public Game (Person member){
this.member = new Person();
this.member = member;
}
}
我的问题是,除了生成多个构造函数外,如何在使父类抽象的同时实现类似的结果,从而禁止用户创建它的实例,从而实现更多的封装?使Person类抽象
您可以在此阅读更多关于这意味着什么的内容:
但最基本的一点是抽象类不能被实例化,但它们可以被子类化。这个问题对我来说很不清楚。您想禁止用户创建游戏对象吗?如果是这样,a可能是合适的。-构造函数上的参数似乎多余,因为您不使用它。@Turing85抱歉,我只是想让它尽可能简单,我不允许用户创建Person类对象,同时也能够使用它们作为参数接收从中扩展的3个子类中的任何一个子类。用户能否实例化这些子类的新实例?是的,我希望用户能够创建子类的实例,以便在游戏类中使用,但不允许他们在Game的构造函数之外创建Person类的实例将Game的构造函数重写为公共Game Person成员{this.member=member;},并将Person的构造函数设置为protected。您已经可以将所有子类传递给构造函数。您可以阅读有关访问修饰符的更多信息。