构造器(构造方法) constructor

本文介绍了Java中构造器的概念及其作用,强调构造器用于初始化新对象的属性。通过示例展示了如何定义和使用构造器,包括构造器的重载。还提到了如果类中没有定义构造器,系统会自动生成默认无参构造器,但一旦定义了自己的构造器,这个默认构造器就会被覆盖。此外,解析了对象创建的流程,解释了在堆和栈中对象的存储和引用方式。
摘要由CSDN通过智能技术生成

在创建对象时直接指定对象的属性

是类的一种特殊方法,主要作用是完成新对象的初始化(不是创建对象)

[修饰符] 方法名(形参列表)(

        方法体;

修饰符可默认,也可public

构造器没有返回值

方法名和类名一样

参数列表和成员方法一样的规则

构造器调用系统完成

使用细节:

1.一个类可定义多个构造器(构造器的重载)【例如可以再创建一个构造器,只指定某一个属性】

public class constructor{
	public static void main(String[] args) {
		person p = new person(100,"hello");//在创建对象的时候直接赋值(完成对象属性的初始化)
		person p2 = new person(100);//调用第二个构造器
		System.out.println(p.age);
	}
}

class person{
	int age;
	String name;

	//构造器
	//构造器没返回值(不用写void)
	//构造器名称和类名一样(都是person)
	//(int age2,String name2)是形参列表,规则和方法一样
	//
	//第一个构造器
	public person(int age2,String name2){
		System.out.println("构造器被使用");
		age = age2;
	}

	//第二个构造器(只指定了age这个属性)
	public person(int age2){
		System.out.println("构造器被使用");
		age = age2;
	}
}

如果没有定义构造器,系统会自动给类生成一个默认无参构造器(可以用javap验证)

【javap可以把class文件反编译成我们写的源代码】

一旦自己定义了构造器,默认的构造器就被覆盖了,除非显式的定义一下

 (这种情况就是人为的更改了构造器,那么创建对象的时候小括号里就不能没东西)

显式的定义一下

class dog{

	public dog(int age){

	}

	dog(){//显示的在定义一下

	}
}

对象创建流程分析:

 执行person p = new person("小倩",20);的时候

先在方法区加载person类信息,然后在堆里面开辟一个空间(空间里面一部分存放age,一部分存放name;分别进行默认初始化,0和null),空间有个地址,到了int age = 90;这行,age的0被改成90;到了String name这行,name的值没被改变还是null;到了构造器内行的时候把实参小倩传给n,然后n再传给name,age同理【小倩在常量池里面,也有个地址】

堆里面的工作做完之后,堆里的空间的地址被传到栈里面的p(这个栈里面的p不是对象,是对象的引用【对象名】)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值