在此程序中创建对象时?

时间:2014-05-03 08:31:04

标签: java inheritance

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()

5 个答案:

答案 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)