构造函数
1. 创建对象的语句:Human zhangsan = new Human();
2. 实际上调用了系统自带的方法来构造对象并进行初始化,即构造函数。
3. 构造函数的作用是生成对象,并对对象的实例变量进行初始化。系统自带的默认构造函数是把所有的数字设为0,所有的布尔变量设为false,所有的对象变量设为null。
package com.dzh.method;
public class Class_Method {
public static void main(String[] args) {
Human zhangsan = new Human();
zhangsan.print();//打印出zhangsan的属性的默认值
}
}
class Human {
String name;
char sex;
int age;
String address;
public void print() {
System.out.println("name:" + name);
System.out.println("sex:" + sex);
System.out.println("age:" + age);
System.out.println("address:" + address);
}
}
4. 构造函数的特点:名字必须与类名相同且没有返回值类型。
5. 构造函数的主要作用是对对象的变量进行初始化,如果不想把它们都初始化为默认值,就需要自己编写构造函数,通过有参数的构造函数可以把值传递给对象的变量。
6. Human的构造函数定义如下:
public Human(String hname, char hsex, int hage, String haddress) {
name = hname;
sex = hsex;
age = hage;
address = haddress;
}
创建对象时使用如下语句,这样生成对象zhangsan 的属性就被初始化为相应的值。
Human zhangsan = new Human("zhangsan", '男', 20, "北京");
7. 已经定义了自己的构造函数,Java不再提供默认的构造函数,这时如果再使用默认的构造函数即Human zhangsan =new Human();编译会出错。只能使用程序中提供的构造函数来创建对象。
8. 构造函数的重载:根据不同的需求对构造函数进行重载,利用不同的构造函数进行对象的创建。 因为有的时候并不需要对全部的变量进行初始化,而只对其中的一部分初始化即可。
package com.dzh.method;
public class Class_Method {
public static void main(String[] args) {
Human lisi = new Human();//调用构造函数1
lisi.print();
Human wangming = new Human("wangming",'女');//调用构造函数2
wangming.print();
Human zhangsan = new Human("zhangsan", '男', 20, "北京");//调用构造函数3
zhangsan.print();
}
}
class Human {
String name;
char sex;
int age;
String address;
//构造函数1
public Human(){
name = null;
sex = ' ';
age = 0;
address = null;
}
//构造函数2
public Human(String hname, char hsex) {
name = hname;
sex = hsex;
}
//构造函数3
public Human(String hname, char hsex, int hage, String haddress) {
name = hname;
sex = hsex;
age = hage;
address = haddress;
}
public void print() {
System.out.println("name:" + name);
System.out.println("sex:" + sex);
System.out.println("age:" + age);
System.out.println("address:" + address);
System.out.println("=============");
}
}
在Human类中提供了3个不同的构造函数以满足构造对象是不同的需要。以上例子看出,创建3个对象分别使用了3个不同的构造函数,起到了不同的效果。Java这个功能在很多情况下非常有用。