构造方法与构造代码

本文介绍了Java中的构造方法(构造函数)和构造代码块。构造方法用于初始化类的对象,无参构造方法是默认的,而有参构造方法则是方法的重载。构造代码块则在对象创建后优先于构造函数执行,用于给所有对象进行共性初始化。

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

一、构造方法(构造函数)

      对于初学者而言,经常见到和用到的是在java中去new一个对象(初始化对象),那这个对象又是怎样new出来的? 例如:Cat  A=new Cat();这里是创建了一个Cat类的对象A,我们发现有个Cat()这个玩意儿,看上去是个函数的写法,bingo!,Cat()在这里就可以理解为一个方法,叫做构造方法或函数;有点啰嗦了,直接上代码

     
class Cat {
	private String name;
	private int age;

	// 1、无参构造方法默认值
	/*Cat() {
		System.out.println("我是无参构造方法!");
	}*/

	// 2、有参构造方法
	/*Cat(String name) {
		System.out.println("我是有参构造方法! ");
	}*/

        //3、构造代码块
	/*
	 * { System.out.println("我是构造代码块!"); }
	 */

}

public class Test1 {
	public static void main(String[] args) {
		Cat A = new Cat();
		System.out.println(A);
		//Cat B = new Cat("黑猫");

	}
}

请先忽略注释部分:代码输出结果为test.Cat@659e0bfd 表示输出的A的对象,可能你会发现Cat类里面并没有构造方法Cat()啊,这里的Cat()是类默认的,你把他直接写出来也可以,注默认的是无参构造方法。

下面把Cat类中1 2注释掉,Test1里面的代码也注释掉,这是我们发现Cat类里面有连个方法Cat()和Cat(String name)这是方法的重载,这是Cat里面有两个构造方法,一个叫无参构造方法,一个叫有参构造方法,你去new对象的时候可以调用不同的构造方法。

总结:
           1、使用new + 构造方法创建一个新的对象
           2、构造函数是定义在java类中的一个用来初始化对象的函数。
           3、构造函数与类同名且没有返回值。

二、构造代码块

 先上代码:

class Cat {
	private String name;
	private int age;

	// 1、无参构造方法默认值
	Cat() {
		System.out.println("我是无参构造方法!");
	}

	// 2、有参构造方法
	Cat(String name) {
		System.out.println("我是有参构造方法! ");
	}
	
	//3、构造代码块
	 { 
		 System.out.println("我是构造代码块!"); 
		 }
}

public class Test1 {
	public static void main(String[] args) {
		Cat A = new Cat();
		Cat B = new Cat("黑猫");

	}
}
输出结果
  我们发现在new对象的时候  {   }这个大括号里的内容总是优先执行,这里的{  }就表示构造代码块,它也是用来初始化对象的,它与构造方法初始化队形的区别是:构造方法是给对应的对象进行初始化,构造代码块是给所有的对象进行初始化。理解不了?那就把上面的代码给加工一下:

class Cat {
	private String name;
	private int age;

	// 1、无参构造方法默认值
	Cat() {
		System.out.println("我是无参构造方法!");
	}

	// 2、有参构造方法
	Cat(String name) {
		System.out.println("我是有参构造方法! ");
	}
	
	//3、构造代码块
	 { 
		 name="猫";
		 System.out.println("我是构造代码块!"); 
		 }

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
	 
	 
}

public class Test1 {
	public static void main(String[] args) {
		Cat A = new Cat();
		Cat B = new Cat("黑猫");
		System.out.println(A.getName());
		System.out.println(B.getName());

	}
}

输出结果:


我们发现在{ }里面加了个属性name="猫",两个对象A B就都获得了这个属性值,所以构造代码块可以把所有对象共性信息放在里面,简化代码冗余。

总结:特点:对象已建立就运行了,而且优先于构造函数执行
          作用:给对象进行初始化的
          区别:构造方法是给对应的对象进行初始化,构造代码块是给所有的对象进行初始化。
          构造代码块中定义是不同对象共性的初始化内容

可能表述的有些啰嗦,不够简洁全面,欢迎指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值