【发布时间】:2015-10-19 08:55:39
【问题描述】:
我知道对象应该被创建成类似Class_name Object_name=new Classname() 的东西。在我的程序中,我创建了一个名为sup 的超类和一个名为der 的派生类。在我的子类构造函数中,我创建了一个像 sup obc = new der(); 这样的对象。没有任何错误,它编译并给出如下输出:
In Superclass with object passed as reference
In Superclass with no constructor
In derived class with no constructor
我不明白我是如何按此顺序获得输出的。为什么会这样?完整代码如下:
class sup {
private int a, b, c;
sup(sup ob) {
System.out.println("In Superclass with object passed as reference");
a = ob.a + 9;
b = ob.b + 9;
}
sup(int a, int b) {
this.a = a;
this.b = b;
}
sup() {
System.out.println("In Superclass with no constructor");
}
}
class der extends sup {
int d;
der(der ob) {
super(ob);
sup obc = new der();
}
der() {
System.out.println("In derived class with no constructor");
}
der(int a, int b, int c) {
super(a, b);
d = c;
}
}
public class Test {
public static void main(String args[]) {
der ob1 = new der(3, 4, 5);
der ob2 = new der(ob1);
}
}
【问题讨论】:
-
请确保您遵守 Java 命名约定,尤其是在这些形成性第一程序中。在Java中,我们使用
PascalCase作为类名,保留camelCase作为变量。此外,请在发布之前格式化您的代码。 -
由于我是 Java 新手,我很快就会学习 Java 命名约定。 @BoristheSpider
-
@Ashokkumar 与其将来学习,不如尝试现在编辑并学习。
-
@karthik 是的。我已经稍微格式化了代码。从现在开始,我将使用正确的命名约定。
-
@Ashokkumar 不要手动格式化代码!这是一项徒劳的任务。请您的 IDE 为您自动格式化。
标签: java object constructor