【问题标题】:Setting fixed variable value in class to be used when creating object在创建对象时设置要使用的类中的固定变量值
【发布时间】:2021-04-23 16:33:41
【问题描述】:

我对编码/Java 还比较陌生,所以通过一些实际任务来学习。遇到问题,我设置了 3 个类来反映 Main、Super 等

在我的主要方法中,我正在创建引用另一个类的对象 - 我遇到的问题是特别设置一个属性的值并修复它?。

- Main(入口点)、Animal、Dog(动物的子类)、Jackrussel(狗的子类)

在 Main 类中 - 创建新的 Jackrussel 对象(从构造函数中提取正确的字段)

问题-在 Jackrussel 类中-我在构造函数中将 Dog 类型设置为 Jackrussel- this.dogtype = "杰克罗素"'

然而,当我在 main 中创建对象时,它不会自动将 dogtype 设置为 jackrussell。我是否在错误的区域定义了这个?由于任何 Jackrussell 对象都必须始终具有 Jackrussell 的 dogtype 吗?我希望这个值自动通过,因为它是在该类构造函数中设置的?

谢谢大家

【问题讨论】:

    标签: java class object constructor


    【解决方案1】:

    根据您的解释,听起来您可能在Jackrussel 的构造函数中在this.dogtype = "Jack Russell" 之后调用了super(...)(超类的构造函数)。如果Dog 的构造函数中还有dogtype 的赋值,那么这样做会覆盖该语句。

    如果您包含一些代码 sn-ps 会更清楚,因为您的错误可能有很多原因。

    【讨论】:

      【解决方案2】:

      使用驼峰式拼写约定:

      public class Animal {
      }
      
      public class Dog extends Animal {
          public final String dogType;
      
          public Dog(String dogType) {
              this.dogType = dogType; // Field becomes parameter.
          }
      }
      
      public class JackRussel extends Dog {
          public JackRussel() {
              super("Jack Russel");
          }
      }
      
      Animal animal = new JackRussel();
      Dog dog = (Dog) animal;
      System.out.println(dog.dogType);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-03
        • 1970-01-01
        • 1970-01-01
        • 2010-09-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多