【问题标题】:Inheritance problems, why can not print the right result?继承问题,为什么不能打印正确的结果?
【发布时间】:2014-12-06 18:43:35
【问题描述】:

要求是:

使用名为 Hop 的公共类创建文件 Hop.java。 创建另外两个类:跳过 Hop 的子类和 Jump 的子类。 在三个类中的每一个中创建一个无参数构造函数,该构造函数在一行上单独打印类的名称(例如,使用 System.out.println(“Hop”) 打印“Hop”类名称。 创建一个 main 方法(在哪里?)并创建一个新的 Jump 实例。 编译并运行。您应该看到输出 Hop、Skip 和 Jump 打印到标准输出。能解释一下吗?

到目前为止我写的代码是:

public class Hop {
    private String name;
    public Hop(String name) {   
        this.name = name;
    }
    public static void main(String args[]) {
        Jump j = new Jump("Hop", "Skip", "Jump");
        System.out.println(j);

    }
}
class Skip extends Hop {
    private String name1;
    public Skip(String name, String name1) {
        super(name);
        this.name1 = name1; 
    }

}
class Jump extends Skip {
    private String name2;
    public Jump(String name, String name1, String name2) {
        super(name, name1);

        this.name2 = name2;
    }

}

【问题讨论】:

  • 看看你的构造函数——它们每个都有参数,而且它们不打印任何东西。没有什么说您应该打印出新创建的实例。基本上,您需要更仔细地阅读说明。
  • "在三个类中的每一个中创建一个无参数构造函数,该构造函数在一行上单独打印类的名称(例如,使用 System.out.println(“Hop”)打印“Hop”类名)” 表明您没有按照提供的说明进行操作

标签: java inheritance


【解决方案1】:

这就是问题要求您执行的操作: (这个问题的目的是证明在创建子类的实例时,所有超类的构造函数都被隐式调用(递归地)。)

public class Hop {
    public Hop() {   
        System.out.println("Hop");
    }
    public static void main(String args[]) {
        Jump j = new Jump();       

    }
}
class Skip extends Hop {
    public Skip() {
        System.out.println("Skip ");
    }

}
class Jump extends Skip {
    public Jump() {
        System.out.println("Jump ");
    }
}

仔细阅读问题。按照说明进行操作。试着想一想这个问题要说明什么。

【讨论】:

  • 非常感谢,我想我知道我的代码哪里出了问题!
猜你喜欢
  • 2012-03-11
  • 2021-04-13
  • 1970-01-01
  • 1970-01-01
  • 2020-08-24
  • 2021-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多