1.构造方法
构造方法是一种特殊的方法,可以在构造方法中构造方法,也能在成员方法中调用构造方法。
作用:创建对象(初始化新对象)。
定义构造方法格式:
class 类名{
访问权限 类名(参数列表){ //定义构造方法
//方法体
//构造方法没有返回值
}
}
class Person{
String name;
int age;
Person() { //构造方法
System.out.println("这是构造方法!);
}
Person(String aName,int aAge) { //构造方法
name = aName;
age = aAge;
}
}
(1)构造方法与类名相同。代码段两个构造方法,方法名都是Person。
(2)不能为构造方法指定类型,也不能用return语句返回值。但构造方法有隐含返回值,该值由系统内部使用。
(3)可以重载构造方法,既能定义多个有不同参数列表的构造方法。
代码段定义了两个重载的构造方法,第一个构造方法没有形参,第二个构造方法有两个形参。
(4)编程人员不能显示地直接调用构造方法,每当使用new关键字创建对象时,JVM为新建对象在堆内存开辟空间后,JVM将自动调用构造方法初始化新对象。Java程序中,通过“new 构造方法名( 实参列表 ); ” 的形式调用构造方法,而不能直接用“构造方法名 ( 实参列表 ); ” 调用构造方法。
(5)如果自定义类中未定义构造方法,系统将为这个类提供一个默认的空间构造方法。默认的空构造方法没有参数,方法体中也没有语句。系统确保类中至少有一个构造方法。
(6)如果自定义类中定义了任何构造方法,系统将不再提供空构造方法。前面代码段定义了Person类的构造方法,因此,系统不再为Person类提供空构造方法。
2.构造方法的定义与使用
/*调用Person3类的无参构造方法!*/
package Mai3;
public class Person3 { //定义数据成员
String name;
int age;
public Person3() { //定义构造方法 无参构造
System.out.println("调用Person3类的无参构造方法!");
}
public Person3(String aName, int aAge) { //初始化name和age的构造方法
name = aName;
age = aAge;
//new Person(aName); //构造方法能调用构造方法
show();
}
public String getPerson() { //定义成员方法,获得对象信息
return "姓名: " + name + "\t年龄: " + age;
}
public void show() {
System.out.println(getPerson());
}
public static void main(String[] args) {
Person3 lisa = new Person3(); //空构造方法实例化对象
Person3 lia = new Person3("李暧",21); //构造方法实例化对象
lisa.name = "Lisa"; //直接赋值
lisa.age = 20;
System.out.println(lisa.getPerson());
//System.out.println(lia.getPerson());
}
}
运行结果为:
调用Person3类的无参构造方法!
姓名: 李暧 年龄: 21
姓名: Lisa 年龄: 20
3.默认构造方法
构造方法是类的一个底线,每个类至少有一个构造方法。
第一种情况,如果自定义类没有显示定义构造方法,JVM将为该类提供一个默认的空构造方法,该方法没有形参,语句体没有任何语句;
第二种情况,如果自定义类定义了构造方法,JVM将不提供默认的空构造方法。
默认构造方法的定义:
class Person {
//1.定义数据成员
String name;
ing age;
//2.定义构造方法
//定义空构造方法,标配
public Person() {
}
//其他构造方法
//3.定义成员方法
}