繁体   English   中英

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

[英]What happens when new ClassName() is called..?

我知道简单地说就是创建了一个对象。 但我最好通过一个场景来阐明它,

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路径(毕竟这里不允许使用任何默认构造函数。)

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

new AB("myPath")调用public AB(String path) ,而public AB(String path)依次调用public A(String path) ,它们都在同一实例上。

的实例AB 是-一个实例A ,而这又是安的实例Object

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM