全屏
构造函数是用于在创建对象后立即初始化对象的代码块。 构造函数的结构看起来像方法。
声明构造函数
构造函数声明的典型语法是() throws{ )
}
构造函数的声明以修饰符开头。 构造函数可以访问的修饰符是公共、私有、受保护或包级别(无修饰符)。
构造函数名称与类的名称相同。 构造函数名称后面是一对括号,其中可能包含参数。 或者,也可以在方括号后指定关键字throws,后跟逗号分隔的异常列表。
以下代码显示了一个声明类Test的构造函数的示例。 类的名称必须与构造函数的名称匹配。 公共类测试{
公共测试() }
//Codegoeshere
}
}
与方法不同,构造函数没有返回类型。
使用构造函数
使用具有new操作符的构造函数在创建新实例后初始化类的实例。 要创建构造函数初始化的对象,请使用new运算符。 以下语句使用Test类的构造函数初始化Test类的对象。 Testt=newTest (;
以下代码演示如何使用构造函数-classCat{
公共cat () }
system.out.println (in constructor . ';
}
}
公共类主{
publicstaticvoidmain (字符串[ ] args ) {
//createacatobjectandignoreitsreference
newCat (;
//createanothercatobjectandstoreitsreferenceinc
Catc=newCat (;
}
}
上面的代码生成以下结果: inconstructor .
inconstructor .
重载构造函数
一个类可以有多个构造函数。 这些称为重载结构函数。 如果类具有多个构造函数,则它们的顺序或参数类型必须与其他构造函数不同。 以下代码声明两个构造函数。 一个构造函数不接受参数,另一个接受字符串类型的参数。 classCar{
//Constructor#1
公共car () }
system.out.println (acariscreated.';
}
//Constructor#2
公共颜色(字符串名称) {
system.out.println (Acar named ' name ' is created.';
}
}
公共类主{
publicstaticvoidmain (字符串[ ] args ) {
Card1=newCar (; //uses构造器# 1
card2=newcar(mycar ); //uses构造器# 2
}
}
上面的代码生成以下结果:
每个对象创建表达式都调用一个构造函数。 在创建对象的过程中,只能执行构造函数的代码一次。
从另一个构造函数调用构造函数
构造函数可以调用同一类中的另一个构造函数。 考虑以下Test类: 声明两个构造函数:一个不接受参数,另一个接受int参数。 必须使用关键字this从另一个构造函数调用另一个构造函数。 下面的代码使用语句this(1),从没有参数的构造函数中调用具有int参数的构造函数: classTest{
Test () )
this(1; //ok.notetheuseofthekeywordthis。
}
test(intx ) {
}
}
如果构造函数调用另一个构造函数,则它必须是构造函数主体中的第一个可执行语句。 因为构造函数是递归调用的,所以不能调用它本身。
从构造函数返回
不能在构造函数声明中指定返回类型。 但是,构造函数主体可以使用没有返回表达式的return语句。 构造函数中的返回语句执行后,控制返回到调用方,并忽略构造函数的其馀代码。 以下代码显示了在构造函数中使用return语句的示例。 classTest{
公共测试(intx ) {
if(x )
返回;
}
system.out.println(here );
}
}
构造函数的访问级别修饰符
构造函数的访问级别决定了构造函数在对象创建表达式中可用的程序。 构造函数可以是四种访问级别之一:公共、私有、受保护和包级别。 以下代码声明Test类的四个构造函数。 //classtesthaspublicaccesslevel
公共类测试{
//constructor #1-包级别访问
Test () )
}
//constructor #2- publicaccesslevel
公共测试(intx ) {
}
//构造器#3-私有访问权限
私有测试(inty,inty ) {
}
//constructor #4-保护性daccesslevel
保护性测试(intx、inty、intz ) {
}
}
公共访问级别的构造函数可以在程序的任何部分使用。 具有“专用”(private )访问级别的构造函数只能用于声明它的同一类。 具有protected访问级别的构造函数可以用于与声明的类具有相同包的程序,也可以用于任何包中的任何子类。 具有包级访问权限的构造函数可以与声明类所在的包一起使用。
默认构造函数
如果在定义类时构造函数没有声明一个,则Java编译器会向类中添加构造函数。 编译器添加的构造函数称为默认构造函数。 默认构造函数没有参数。 默认构造函数也称为无参数构造函数。 如果类中已经有构造函数,编译器不会添加构造函数。
共享到:
0评论