【发布时间】:2017-04-26 18:39:15
【问题描述】:
我正在学习继承,并且正在使用这个简单的程序,它有一个超类和一个子类,如下所示。我的问题不是针对这个程序的。然而,这是我第一次看到这种情况发生的地方,所以我用它作为一个更一般的概念问题的例子。
为什么简单地实例化类会运行构造函数并输出内容? 我之前的理解是,实例化类只是创建对象,但它不会做任何事情。
SuperClass1.java
public class SuperClass1 {
public SuperClass1(){
System.out.println("This is the superclass constructor.");
}
}
SubClass2.java
public class SubClass2 extends SuperClass1
{
public SubClass2()
{
System.out.println("This is the subclass constructor.");
}
}
Main.java
public class Main {
public static void main(String[] args)
{
SubClass2 obj1 = new SubClass2(); // why should this print something?
}
}
输出
这是超类的构造函数。
这是子类的构造函数。
【问题讨论】:
-
“实例化类”通常意味着做某事。除了将每个字段设置为 0(或 null 或 false)之外,Java 本身并不真正知道如何做任何事情。大多数时候这还不够,所以类在实例化时必须真正做一些事情。在您的情况下,“实例化”恰好包含
println。 -
因为它是这样工作的。我建议阅读 Oracle Java 教程,因为那里解释了所有基本内容。
标签: java object inheritance printing instantiation