【Java】5.5 深入构造器

本文深入解析Java中的构造器概念,包括构造器的定义、构造器重载以及this关键字的使用。通过实例演示如何利用构造器初始化对象,并展示了构造器重载在实际编程中的应用。

目录

构造器

构造器重载

this的作用


构造器

构造器是一个特殊的方法,用来进行实例初始化的

  1. 无需声明返回值类型,如果声明了返回值类型,他就变成了普通的方法
  2. 构造器的作用:构造器是用来初始化实例的属性,new是用来创建对象的
  3. 构造器重载 —— 完全类似于方法重载。
    1. 两同:同一个类,构造器名相同
    2. 一不同:形参不同
public class ConstructorTest {
	public String name;
	public int count;

	// 提供自定义构造器,该构造器包含两个参数
	public ConstructorTest(String name, int count) {
		//构造器里的this代表它进行的初始化的对象
		//下面两行代码将传入的2个参数赋给this代表对象的name和count实例变量
		this.name = name;
		this.count = count;
	}

	public static void main(String[] args) {
		//使用自定义的构造器来创造器
		//系统将会对该对象执行自定义的初始化
		ConstructorTest tc = new ConstructorTest("dfgcs", 22);
		
		
		//输出ConstructorTest对象的name和count两个实例变量
		System.out.println(tc.name);
		System.out.println(tc.count);
	}
}

构造器重载

       同一个类里具有多个构造器,多个构造器的形参列表不同,即被称为构造器重载。构造器重载允许Java类里包含多个初始化逻辑,从而允许使用不同的构造器来初始化Java对象。这是通过形参的不同来找相关的构造器。

构造器重载和方法重载类似:

  1. 要求构造器的名字相同,完全类似于方法重载。
  2. 两同:同一个类,构造器名相同
  3. 一不同:形参不同

public class ConstructorOverload {
	public String name;
	public int count;
	//提供一个无参数构造器
	public ConstructorOverload() {}
	//提供带两个参数的构造器
	//对该构造器返回的对象执行初始化
	public ConstructorOverload(String name,int count) {
		this.name=name;
		this.count=count;
	}
	
	public static void main(String[] args) {
		//通过无参数构造器创建ConstructorOverload对象
		ConstructorOverload oc1 =new ConstructorOverload();
		//通过有参数构造器创建ConstructorOverload对象
		ConstructorOverload oc2 =new ConstructorOverload("构造器的重载",220000);
		System.out.println(oc1.name+" "+oc1.count);
		System.out.println(oc2.name+" "+oc2.count);
	}
}

this的作用

  1. this的引用【this.XXXX】
    1. 在构造器中,this代表构造器正在初始化对象
    2. 在方法中,this代表调用该方法的实例
  2. this的调用【this(XXXX)】
    1. this调用当前类中另一个重载的构造器

public class Cat {
	
	public String name;
	public String color;
	public double weight;
	//两个参数的构造器
	public Cat(String name,String color) {
		this.name=name;
		this.color=color;
	}
	//三个参数的构造器
	public Cat(String name,String color,double weight) {
		//通过this调用另一个重载的构造器的初始化代码
		//这是从软件工程角度要求的,降低软件维护成本
		this(name,color);
		//下面this引用该构造器正在初始化的Java对象
		this.weight=weight;
	}
	
	public void info() {
		System.out.println(name+"是"+color+"的"+" , 有"+weight+"kg");
	}
	public static void main(String[] args) {
		Cat cat = new Cat("小红", "红");
		cat.info();
		Cat cat2=new Cat("小蓝","蓝",52.36);
		cat2.info();
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_之桐_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值