在Java类中可以重载多个构造器,只要他们有不同的参数声明。
然而在使用中却会碰到这种令人混淆的情况:
class A{
public A(Object o){
//...
}
public A(String[] strings){
//...
}
//...
}
构造器调用的地方:
A a = new A( null );
这时虚拟机会使用的哪一个构造器来构造A对象呢?
答案:A
原因是Java重载的解析过程分为两个阶段:
1,选取所有可以应用的方法或者构造器
2,从1的列表中选择最精确的一个
Object是所有类型中最不精确的一个,所以null被看成String[]类型。