当前位置: 首页 > 知识库问答 >
问题:

从超类中生成子类的object

汝岳
2023-03-14
public class superClassName(){
    method(){
    make object of subclass type used
    }

然后我调用子类中的方法。

我希望有一个对象创建的基础上,子类已经被调用,如果这是有意义的?

共有1个答案

岳英耀
2023-03-14

使用反射可能提供最快的解决方案(this.getClass()返回具体的子类):

void method(){
    //use default, no-arg constructor
    superClassName newObject = this.getClass().getConstructor().newInstance();
}

或者,父类可以声明强制子类提供供应商的抽象方法:

public abstract class superClassName(){
    abstract Supplier<superClassName> getInstanceSupplier();

    void method(){
        superClassName newObject = this.getInstanceSupplier().get();
    }
}

并简单地实现它:

public class SubClassName extends superClassName {
    abstract Supplier<superClassName> getInstanceSupplier() {
        return () -> new SubClassName();
    }
}
 类似资料:
  • 假设我有一个抽象类Person。有另一个类学生扩展了Person。但是学生类有一个成员变量,比如String类型的学院,它在Person类中不存在。 我们知道我们可以从超类引用子类,例如, 人p=新学生(); 对象p会有成员学院吗?

  • 我正在阅读这本Java SCJP的书,我偶然发现了以下内容: 但是我得到了这个错误: 那么,出什么问题了?

  • 有没有方法用子类的静态成员类参数化超类? exampleSuperClass.java: 编译失败,错误为: 或者与: 成员不能解析为类型 如果用另一个包保护的顶级类来参数化ExampleSubClass,它工作得很好(也就是没有错误)。 这背后的驱动力是我有一个泛型超类和许多不同的和对。但是由于只被引用,最好是: 限制的访问,使其成为静态成员类和 通过不给自己的文件来减少文件数。 那么,在参数化

  • 我正在学习java入门课程,我们刚刚开始学习继承。我正在做一项任务,要求我们创建一个具有名称和年龄的“Pet”超类;和三个子类,每个都有自己独特的特征(我选择了“狗”、“猫”和“鸟”)。在我们构建了所有这些之后,我们将创建一个主类来测试一切,这就是我遇到问题的地方。我试图为这些独特的特性调用

  • 问题内容: 我正在学习Java入门课程,我们才刚刚开始学习继承。我正在完成一项任务,要求我们创建一个具有名称和年龄的“宠物”超类。和三个子类,每个子类都有自己的独特特征(我选择了“狗”,“猫”和“鸟”)。构建完所有这些之后,我们将创建一个Main类来测试所有内容,这就是我遇到问题的地方。我试图在中调用这些独特特征的方法,但似乎只能找到超类中的方法。 这是主类: 这是我的超人 这是子类之一(它们看起

  • 问题内容: 我正在尝试创建一个将字段作为参数的构造函数,然后将其放入存储在超类中的字段中。这是我正在使用的代码 在超类中,我用 我有一个访问器方法 我收到一个错误“ 味道在超类中具有私有访问权 ”,但是我认为这无关紧要,因为我正在调用将其返回到字段的访问器方法? 问题答案: 您应该做什么: 在您的超类中添加一个构造函数: 在Crisps类中: 注释 对您的问题的一些评论: “在超类中,我已经用”