调用新的ClassName()时会发生什么?

时间:2011-09-22 13:14:14

标签: java object

我知道用简单的单词创建一个Object。但我最好用一个场景来说清楚它,

class A {
    public A(String path){
    }
}

class AB extends A{
    public AB(String path){
      super(path);
    }
}

class B{
    public void foo(){
        AB a = new AB("myPath");
        // now will constructor of class AB will run on another instance of 
        // AB or is there any other way "a" constructed.    
    }
}

我问这个是因为如果构造函数在另一个实例上运行(在本例中为AB),那么谁将为它提供所需的String路径(并且此后不允许使用默认构造函数。)

2 个答案:

答案 0 :(得分:4)

此代码中没有“另一个实例”;只有一个。

new AB("myPath")调用public AB(String path),后者又调用public A(String path),所有这些都在同一个实例上。

AB A Object个实例的实例,{{1}}实例{{1}}。

答案 1 :(得分:1)

构造函数将“运行”新创建的AB实例。 new表达式返回对此实例的引用,并将其存储为a

的值