import java.io.*;
class obj
{
obj()
{
System.out.println("This method in the class");
}
String meth()
{
return "Aint Defined";
}
}
class obj1 extends obj
{
void calll()
{
System.out.println(super.meth());
}
}
class obj2
{
public static void main(String args[])
{
obj1 o1=new obj1();
o1.calll();
}
}
在此程序中何时为类obj创建对象。
是否在运行时到达此代码
class obj1 extends obj
或者当运行时间到达println中的此代码时
super.meth()
答案 0 :(得分:3)
使用" new"创建对象。关键字。
所以在这种情况下
obj1 o1=new obj1(); //creates obj1 (including its parent, obj)
答案 1 :(得分:2)
您不在程序中创建类obj
的对象。顺序是:
obj1
实例已创建obj1
方法calll()
被调用
meth()
(我认为此示例中不需要super
)创建对象时的更多顺序: Oracle documentation
答案 2 :(得分:1)
o1
时会创建 obj1 o1=new obj1();
答案 3 :(得分:1)
执行语句obj1 o1 = new obj1();
时创建对象。在调用继承时,您似乎也关心构造函数的执行顺序。 This link会帮助你。
答案 4 :(得分:1)
Always Runtime从main方法开始执行。
所以你的执行从主线和内线主方法开始
obj1 o1=new obj1();
o1.calll();
和对象总是在我们使用new后跟一个constrcutor时创建 该课程。
所以在你的情况下new obj1();
在运行时到达这一行时在堆中创建一个对象,在创建它之前调用constrcutor obj1();
创建o1变量后,将指向创建的新对象。
使用o1,您可以访问对象的状态(方法和vaiables)