类的成员之一:构造器(Constructor)

本文介绍了Java构造器的特征、作用及语法格式,包括无参和有参构造器的定义,强调了构造器在对象创建和初始化中的角色。同时,讨论了构造器中如何通过this关键字调用其他构造器。最后,解释了构造器并不完全负责对象的创建,而是系统先分配内存并初始化,构造器执行体完成剩余初始化工作。
摘要由CSDN通过智能技术生成

一、构造器的特征与作用

构造器的特征

  1. 它具有与类相同的名称
  2. 它不声明返回值类型。(与声明为void不同)
  3. 不能被static、final、synchronized、abstract、native修饰,不能有return语句返回值

构造器的作用

  • 创建对象;给对象进行初始化

二、构造器的语法格式

在这里插入图片描述
根据参数不同,构造器可以分为如下两类:

  • 隐式无参构造器(系统默认提供)
  • 显式定义一个或多个构造器(无参、有参)

注意

  • Java语言中,每个类都至少有一个构造器
  • 默认构造器的修饰符与所属类的修饰符一致
  • 一旦显式定义了构造器,则系统不再提供默认构造器
  • 一个类可以创建多个重载的构造器
  • 父类的构造器不可被子类继承
/*
 * 类的结构之三:构造器(或构造方法、constructor)的使用
 * construct:建设、建造。
 * 
 * 一、构造器的作用:
 * 1.创建对象
 * 2.初始化对象的信息
 * 
 * 二、说明:
 * 1.如果没有显示的定义类的构造器的话,则系统默认提供一个空参的构造器
 * 2.定义构造器的格式:权限修饰符 类名(形参列表){}
 * 3,一个类定义的多个构造器,彼此构成重载
 * 4.一旦我们显示的定义了类的构造器之后,系统就不再提供默认的空参构造器
 * 5.一个类中,至少有一个构造器
 */

class Person{
	//属性
	String name;
	int age;
	
	//构造器
	public Person(){
		System.out.println("Person()...");
	}
	
	public Person(String n){
		name=n;
	}
	
	public Person(String n,int a){
		name=n;
		age=a;
	}
	
	//方法
	public void eat(){
		System.out.println("人吃饭");
	}
	
	public void study(){
		System.out.println("人学习");
	}
}
public class PersonTest {
	public static void main(String[] args) {
		
		//创建类的对象:new+构造器
		Person p = new Person();
		p.eat();
		
		Person p1=new Person("Tom");
		System.out.println(p1.name);//Tom
	}
}

三、构造器中调用构造器

查看this关键字在构造器中调用其它构造器的功能

三、问题

1.构造器是创建Java对象的途径,是不是说构造器完全负责创建Java对象?

答:不是!构造器是创建Java对象的重要途径,通过new关键字调用构造器时,构造器也确实返回了该类的对象,但这个对象并不是完全由构造器负责创建的。实际上,当程序员调用构造器时,系统会先为该对象分配内存空间,并为这个对象执行默认初始化,这个对象已经产生了。也就是说,当系统开始执行构造器的执行体之前,系统已经创建了一个对象,只是这个对象还不能被外部程序访问,只能在该构造器中通过this来引用。当构造器的执行体执行结束后,这个对象作为构造器的返回值被返回,通常还会赋给另一个引用类型的变量,从而让外部程序可以访问该对象。—《疯狂Java讲义》
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值