java 类中构造函数的讲解

本文深入解析Java类构造函数的作用、初始化过程,并通过示例演示如何自定义构造函数,包括参数化构造函数和构造代码块的应用。重点强调构造函数在对象创建时的重要性及其实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*构造函数
	对象已建立就会调用与之对应的构造函数
	作用:可用于初始化对象
	当一个类中未定义构造函数时,系统会默认给该类构建一个空参数的构造函数;
	当自定义构造函数后,系统不再定义空参数的构造函数
*/
class PersonDemo2 
{
	public static void main(String[] args) 
	{
		System.out.println("Hello World!"); 
//		Person p1 = new Person();
//		p1.setName("lisan");
//		p1.getName();
		Person p2 = new Person("Lili");
		p2.setName("fmi");
		p2.getName();
//		Person p3 = new Person("Lilei",12);
	}
}

class Person
{
	private String name;
	private int age;
	
	

	/*定义构造函数,函数名与类名必须一致*/ 
	Person()
	{
		System.out.println("A:系统默认的构造函数,无参数");
	}

/*
	this :代表本类的对象,到底代表哪一个?
		this代表它所在函数所属对象的引用。哪个对象在调用this所在的函数,this就代表哪个对象

	应用:当定义类中的功能时,该函数内部要调用到该函数的对象时,就用this来表示此对象
*/	
	Person(String name)
	{
	//	name = name ; //注意变量作用域 类成员被 函数参数覆盖 导致赋值失败 
		this.name = name;
	//	System.out.println("B:Name = "+name);
	}

	Person(String name,int n)
	{
//		this.name = name;
//		Person(name); // 错误,构造函数间不能直接调用,可通过this 解决,this语句必须放在函数第一行
						//因为初始化语句应该先执行,避免赋值语句赋值后被覆盖
		this(name); //this 关键字用于构造函数构造
		age = n;
		System.out.println("C:Name = "+name +"," + "age = " + age);
	}
/*构造代码块:对象一建立就运行,运行顺序: 构造代码块 --> 构造函数

	作用:给所有对象进行初始化,而构造函数则通过函数重载
方式调用,不同对象可能调用不同的构造函数
	
	{
		System.out.println("这是代码块起始位置:");
		age = 2;
		System.out.println("代码块赋值age = "+age);
	}
*/


	public void setName(String name)
	{
		this.name = name;  //参数名与类成员名一样时,通过this关键指定
		//name = name;
//		name  = "name改变了,没加this";
//		System.out.println("name = "+name);
//		System.out.println("调用函数赋值名字");
	}

	public String getName()
	{
		
//		System.out.println("调用函数输出名字:"+name);
		return this.name;
	}
}
/**
新建一个对象时,其实时通过调用构造函数来构造的,所以当构造函数设为private 时,外部将无法创建此类的新的实例对象?????????
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值