在 Java 中,对象是被构造的。每次创建一个新对象时,都会调用至少一个构造函数。每个类都有一个构造函数,尽管如果您不显式创建一个,编译器会为您构建一个。关于构造函数的规则有很多,让我们关注基本的声明规则。这是一个简单的例子:
class Tets{
protected Test() { } // this is Test's constructor
protected void Test() { } // this is a badly named,
// but legal, method
}
首先要注意的是构造函数看起来非常像方法。一个关键的区别是构造函数不能永远,永远,永远,有一个返回类型......永远!然而,构造函数声明可以具有所有正常的访问修饰符,并且它们可以接受参数(包括 var-args),就像方法一样。关于构造函数的另一个重要规则是,它们必须与声明它们的类具有相同的名称。构造函数不能被标记为静态的(它们毕竟与对象实例化相关联),它们不能被标记为最终的或抽象的(因为它们不能被覆盖)。以下是一些合法和非法的构造函数声明:
class Foo2 {
// legal constructors
Foo2() { }
private Foo2(byte b) { }
Foo2(int x) { }
Foo2(int x, int... y) { }
// illegal constructors
void Foo2() { } // it's a method, not a constructor
Foo() { } // not a method or a constructor
Foo2(short s); // looks like an abstract method
static Foo2(float f) { } // can't be static
final Foo2(long x) { } // can't be final
abstract Foo2(char c) { } // can't be abstract
Foo2(int... x, int t) { } // bad var-arg syntax
}
访问https://java.net/downloads/jfjug/SCJP%20Sun%20Certified%20Programmer%20for%20Java%206-0071591060.pdf