对于下面的代码,我能够重载默认构造函数,但根据书中的JAVA OCA SE 8 by mala gupta,这句话是假的,它说我们不能重载一个默认构造函数,有什么想法?
package com.sandy.OCA_prep;
class App
{
static
{
System.out.println("inside static block");
}
App(int a)
{
System.out.println("inside the integer overloaded constructor");
}
public static void main( String[] args )
{
System.out.println("hello world");
App app2=new App(5);
}
}
"重载默认构造函数 "这句话是没有道理的。
你可以 指定自己的无参数构造函数 从而阻止编译器生成默认构造函数,但我不会把这称为 "重载默认构造函数"。
这是一个棘手的问题。根据定义,默认构造函数是指当你没有包含一个构造函数时,由编译器提供的构造函数。假设你写了一个类,然后编译它。在生成的.class文件中,你会看到有一个no-args构造函数,即使你没有在代码中包含一个。这就是默认的构造函数。然而,当你写你自己的构造函数时,默认的构造函数将不会被编译器插入。记住,你写的no-args构造函数不被认为是默认构造函数.所以,从技术上讲,默认构造函数永远不能被重载。
我能够重载缺省构造函数。
不,你没有。这里没有重载。重载指的是有两个或多个相同的方法可以通过不同的参数列表来区分。
通过声明你自己的构造函数,默认的构造函数--如果你不声明你自己的构造函数,就会使用隐式构造函数--不会被应用。