我知道用简单的单词创建一个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路径(并且此后不允许使用默认构造函数。)
答案 0 :(得分:4)
此代码中没有“另一个实例”;只有一个。
new AB("myPath")
调用public AB(String path)
,后者又调用public A(String path)
,所有这些都在同一个实例上。
AB
A
Object
个实例的实例,{{1}}实例{{1}}。
答案 1 :(得分:1)
构造函数将“运行”新创建的AB实例。 new
表达式返回对此实例的引用,并将其存储为a