当前位置: 首页 > 面试题库 >

如何从超类创建子类的实例?

马安邦
2023-03-14
问题内容

我正在创建一个类及其子类,需要在其中调用父级的静态方法以返回子级实例。

class Animal{
  static findOne(){
    // this has to return either an instance of Human
    // or an instance of Dog according to what calls it
    // How can I call new Human() or new Dog() here? 
  }
}

class Human extends Animal{
}

class Dog extends Animal{
}

const human = Human.findOne() //returns a Human instance
const day = Dog.findOne() //returns a Dog instance

问题答案:

该静态方法被调用,其this值是类对象,子类,你把它称为后的构造。因此,您可以使用实例化它new

class Animal {
  static findOne() {
    return new this;
  }
}

class Human extends Animal{
}

class Dog extends Animal{
}

const human = Human.findOne() // returns a Human instance
const dog = Dog.findOne() // returns a Dog instance


 类似资料:
  • 假设我有以下代码 然而,现在我希望能够将一个超类对象传递给子类构造函数。我该怎么做? 基本上,我想这样做。。。 但是如果超类更复杂,我不想在super()调用中添加每个值。相反,我只想传入一个已经存在的对象,并将其用作超类。 我想这么做。。。 但我不确定这是否被允许? 如果我在超类定义中添加一个构造函数,似乎我可以完成上面的工作。但那会是什么样子呢?

  • 我的子类是,我需要在我的超类中使用字段和。我知道如何在子类中使用超类变量,但我必须学会如何做相反的事情?谢谢。

  • 问题内容: 我希望能够通过在已实例化的对象上调用方法来创建对象的新实例。例如,我有一个对象: 我希望能够调用并拥有两个有机体类型的对象。此时我的方法如下所示: 并且我非常确定它不起作用(我甚至不确定如何测试它。我在本文中尝试了gc方法)。那么,如何使我的对象创建自己的副本,就像我创建的第一个对象(带有)一样,该副本是可访问的? 问题答案: 另一个选项-如果方法中未使用实例(): 这样可以确保生物产

  • 我正在使用Spring maven插件,我想从特定文件夹中的指定xml模式创建POJO类。我尝试通过java代码使用< code>xjc命令,但是它不能生成这些类。其次,我尝试使用< code>jaxb,但是在marshell/unmarshalling时,它处理的是< code>xml文件,而不是< code>xsd模式。我认为这不是从< code>xsd创建POJO的方法。 在java中从xs

  • 当我们实例化子类对象时,父类的构造函数也会被调用。那么它是父类的对象的创建吗?

  • 问题内容: 有没有办法从基类实例中找出派生类的名称? 例如: 现在,如果某个方法返回的对象,我可以找出它的类型还是? 问题答案: 使用或 要么返回:,, 在if子句中,您需要向下转换-即 也就是说,有时认为使用或是不好的做法。您应该使用多态性来避免需要检查具体的子类,但是我不能用给出的信息告诉您更多信息。