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

如何在其子类中初始化超类的变量,以便子类对其他子类唯一的该变量具有自己的值?

扈阳辉
2023-03-14

例如,如果在类“动物”中有字符串变量“物种”,并且我创建了一个子类“猫”,我如何初始化物种变量,以便对于猫,它包含值“cat”?对不起,这个愚蠢的问题。

共有1个答案

董和风
2023-03-14

这是一个示例,表明您可以拥有一个具有通用字段(在我们的例子中为species)的超类,并且该字段可以在具有不同值的超类的子类中实例化。子类可以有一个默认构造函数,为通用字段设置一个默认值(在我们的例子中,物种具有默认值cat),我们可以有构造函数帮助我们为子类cat设置一个新的spice。

public class Test {
    public static void main(String[] args) {
        Animal animal = new Animal();
        Cat cat = new Cat();
        Cat tiger = new Cat("tiger");
        Cat jaguar = new Cat("jaguar");

        System.out.println("Animal specie: " + animal.species);
        System.out.println("Normal cat specie: " + cat.species);
        System.out.println("Tiger cat specie: " + tiger.species);
        System.out.println("Jaguar cat specie: " + jaguar.species);
    }
}

class Animal {
    String species;

    public Animal() {
        species = "animal";
    }
}

class Cat extends Animal {
    public Cat() {
        species = "cat";
    }

    public Cat(String specie) {
        species = specie;
    }
}

在这里您可以看到结果

 类似资料:
  • 我在Java中读到了关于将超类变量类型化为子类的知识,反之亦然。请告诉我哪些是有效的? 动物是超级类,有猫和狗子类。

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

  • 问题内容: 因此,我是一名学生,正在学习Java。有一个概念让我难以把握,希望有人可以为我提供一些启示。我的问题是关于多态性。例如,假设我有以下代码。 据我了解,由于变量类型是Animal,所以a将具有Animal的所有特征。但是,由于创建的对象是蜥蜴,因此将使用Lizard类中的所有重写方法,而不是Animal类中的方法。这是正确的吗? 另外,在创建时将使用哪个类构造函数? 谢谢你的帮助。我看起

  • 问题内容: 我需要在其他班上变数。我怎样才能做到这一点? 所以我尝试在Textcl.class中使用,但是得到了。 问题答案: 您将得到空值,因为inString从未按Robert Kilar在注释中正确指出的那样进行初始化。 您可以通过使用类名来引用静态变量。 示例ClassName.variablename。就你而言 运行您的主类。当您运行inString时,将在该类的构造函数中对其进行初始化

  • 问题内容: 得知子类的类变量无法访问父类的类变量而没有特别指出父类的名称,我感到很惊讶: 为什么在定义By时我必须引用Ax,而不仅仅是x?这与我对实例变量的直觉是相反的,并且因为在定义B之后我可以引用Bx。 问题答案: 在Python中,在创建类之前,将在其自己的名称空间中执行类的主体(此后,该名称空间的成员将成为该类的成员)。因此,当解释器达到y = x + 1时,此时B类尚不存在,因此没有父类

  • 我找不到任何关于这个具体案例的具体SO帖子,所以我想问一下我认为是/否的问题。 以下是JLS§12.4.2(Java SE 8),清单6-7: 我的问题是:这是否意味着子类的final static变量在超类的静态初始化之前初始化(假设final static作为其声明的一部分初始化)?