构造方法

若没有构造方法,实例化一个对象后,如果要为这个对象中的属性赋值,必须要通过直接访问对象的属性或调用方法才可以。

通过构造方法,当类实例化一个对象时会自动调用构造方法,在实例化对象的同时就为这个对象的属性进行赋值。

 

如果一个类中的方法同时满足以下三个条件,该方法称为构造方法:

1、方法名与类名相同。

2、在方法名的前面没有返回值类型的声明。

3、在方法中不能使用return语句返回一个值。

 

案例1:实例化对象的同时,调用构造方法

结果直接输出:无参的构造方法被调用了...,因为new Person()语句不仅实例化了Person对象,还调用了构造方法Person()。

class Person {
	// 下面是类的构造方法
	public Person() {
		System.out.println("无参的构造方法被调用了...");
	}
}
public class Example05 {
	public static void main(String[] args) {
		Person p = new Person();  // 实例化 Person 对象
	}
}

 

 

案例2:在实例化对象的同时就为这个对象的属性进行赋值

结果输出:I am 22 years old.!

 

class Person { 
	int age;
	// 定义有参的构造方法
	public Person(int a) {
		age = a;                       // 为age属性赋值
	}
	public void introduce() {
		System.out.println("I am " + age + " years old.!");
	}
}
public class Example06 { 
	public static void main(String[] args) {
		Person p = new Person(22); // 实例化 Person 对象
		p.introduce();
	}
}

 

 

案例3:构造方法的重载:

在一个类中可以定义多个构造方法,只要每个构造方法的参数类型或参数个数不同即可,在创建对象时,可以通过构造不同的构造方法,为不同的属性赋值。

如下例

class Person {
	String name;
	int age;
	// 定义两个参数的构造方法
	public Person(String con_name, int con_age) {
		name = con_name;	// 为name属性赋值
		age = con_age; 		// 为age属性赋值
	}
	// 定义一个参数的构造方法
	public Person(String con_name) {
		name = con_name; 	// 为name属性赋值
	}
	public void speak() {
		// 打印name和age的值
		System.out.println("大家好,我叫" + name + ",我今年" + age + "岁!");
	}
}
public class Example2 {
	public static void main(String[] args) {
		// 分别创建两个对象 p1 和 p2
		Person p1 = new Person("小田");
		Person p2 = new Person("大燕", 22);
		// 通过对象p1 和 p2 调用speak()方法
		p1.speak();
		p2.speak();
	}
}

 

 

 

注意:当定义有参的构造方法时,且没有定义无参构造方法时,实例化对象时必须传入参数,否则错误。

class Person { 
	int age;
	// 定义有参的构造方法
	public Person(int a) {
		age = a;                       // 为age属性赋值
	}
	public void introduce() {
		System.out.println("I am " + age + " years old.!");
	}
}
public class Example06 { 
	public static void main(String[] args) {
		Person p = new Person(); // 实例化 Person 对象,但没有传参,报错
		p.introduce();
	}
}

 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值