java内部类构造函数_Java构造函数(构造器)
全屏
构造函数是⽤于在对象创建后⽴即初始化对象的代码块。构造函数的结构看起来类似于⼀个⽅法。
声明构造函数
构造函数声明的⼀般语法是: () throws  {
}
构造函数的声明以修饰符开头。构造函数可以将其访问修饰符为:public,private,protected或package-level(⽆修饰符)。
构造函数名称与类的名称相同。构造函数名称后⾯是⼀对括号,可能包括参数。可选地,右括号后⾯可以是关键字throws,其后⾯是逗号分隔异常列表。
以下代码显⽰了声明类Test的构造函数的⽰例。 类的名称和构造函数的名称必须匹配。public class Test {
public Test() {
// Code goes here
}
}
与⽅法不同,构造函数没有返回类型。
使⽤构造函数
使⽤⼀个带有new操作符的构造函数来在创建新实例之后初始化类的实例。使⽤new运算符来创建⼀个对象,构造函数初始化该对象。以下语句使⽤Test类的构造函数来初始化Test类的对象:Test t = new Test();
以下代码显⽰了如何使⽤构造函数 -class Cat {
构造函数可以被重载public Cat() {
System.out.println("");
}
}
public class Main {
public static void main(String[] args) {
// Create a Cat object and ignore its reference
new Cat();
// Create another Cat object and store its reference in c
Cat c = new Cat();
}
}
上⾯的代码⽣成以下结果。
重载构造函数
⼀个类可以有多个构造函数。 它们称为重载构造函数。如果⼀个类有多个构造函数,它们的顺序或参数类型都必须与其他构造函数不同。下⾯的代码声明两个构造函数。 ⼀个构造函数不接受参数,另⼀个接受⼀个String类型的参数。class Car {
// Constructor #1
public Car() {
System.out.println("A car  is created.");
}
// Constructor #2
public Car(String name) {
System.out.println("A car  named " + name + "  is created.");
}
}
public class Main {
public static void main(String[] args) {
Car d1 = new Car(); // Uses Constructor #1
Car d2 = new Car("My Car"); // Uses Constructor #2
}
}
上⾯的代码⽣成以下结果。
每个对象创建表达式调⽤⼀次构造函数。可以在对象创建的过程中只执⾏⼀个构造函数的代码⼀次。
从另⼀个构造函数调⽤构造函数
构造函数可以调⽤同⼀类中的另⼀个构造函数。考虑下⾯的Test类。 它声明两个构造函数; ⼀个不接受
参数,⼀个接受⼀个int参数。必须使⽤关键字this从另⼀个构造函数调⽤另外⼀个构造函数。下⾯的代码使⽤语句“this(1);”从没有参数的构造函数中调⽤具有int参数的构造函数。class Test {
Test() {
this(1); // OK. Note the use of the keyword this.
}
Test(int x) {
}
}
如果构造函数调⽤另⼀个构造函数,它必须是构造函数体中的第⼀个可执⾏语句。构造函数不能调⽤⾃⾝,因为它将导致递归调⽤。
从构造函数返回
构造函数在其声明中不能有返回类型。但可以在构造函数体中使⽤没有返回表达式的return语句。当⼀
个构造函数中的返回语句被执⾏时,控制返回给调⽤者,忽略构造函数的其余代码。以下代码显⽰了在构造函数中使⽤return语句的⽰例。class Test {
public Test(int x) {
if (x
return;
}
System.out.println("here");
}
}
构造函数的访问级别修饰符
构造函数的访问级别决定了可以在对象创建表达式中使⽤该构造函数的程序。可以为构造函数指定四个访问级别之⼀:
public,private,protected和package-level(不写的情况)。下⾯的代码声明了Test类的四个构造函数。
// Class Test  has  public access level
public class Test {
// Constructor #1 - Package-level access
Test() {
}
// Constructor #2 - public access level
public Test(int x) {
}
// Constructor #3 - private access level
private Test(int x, int y) {
}
// Constructor #4 - protected access level
protected Test(int x, int y, int z) {
}
}
具有公共(public)访问级别的构造函数可以在程序的任何部分中使⽤。具有私有(private)访问级别的构造函数只能在声明它的同⼀类中使⽤。具有受保护(protected)访问级别的构造函数可以在具有声明类的相同包的程序中以及在任何包中的任何⼦类中使⽤。具有包级访问权限的构造函数可以在声明其类的同⼀个包中使⽤。
默认构造函数
如果在定义类时,⼀个构造函数都不声明,Java编译器将向类添加⼀个构造函数。编译器添加的构造函数称为默认构造函数。默认构造函数没有任何参数。默认构造函数也称为⽆参数构造函数。如果类已经有⼀个构造函数,编译器就不会添加任何构造函数。
分享到:
0评论

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。