面向对象编程学习(二)构造方法

构造方法

创建实例时,实际上是通过构造方法来初始化实例的。通过构造方法,可以在创建实例时一次性传入想传入的一个或多个参数,完成初始化。

class Person{
	private String name;
	private int age;
	private int grade;
	
	public Person(String name,int age,int grade){
		this.name = name;
		this.age = age;
		this.grade = grade;
		}
}

由于构造方法很特殊,所以构造方法的名称就是类名。构造方法的参数没有任何限制,在方法内部也可以任意编写语句。和普通方法相比,构造方法没有返回值(连void也没有),调用构造方法,必须使用new操作符。

person P = new Person("Xiao Ming",18,9);

默认构造方法

没有构造方法为什么可以使用new操作符?
一个类如果没有定义构造方法,java编译器会自动为这个类生成一个默认构造方法,它没有参数没有执行语句,类似于

class person{
	private String name;
	
	public Person(){
	}
}

如果定义了构造方法,则不再自动生成默认构造方法。

初始化字段

没有在构造方法中初始化字段时,引用类型字段的默认值是null,int类型的默认值是0,布尔类型的默认值是false

class Person{
	private int age; //默认值0
	private String name; //默认值null
	
	public Person(){
	}
}

可以在创建字段时直接对字段初始化

class Person{
	private int age = 18;
	private String name = "Xiao Ming";
	
	public Person(){
	}
}

如果既对字段初始化,又在构造方法中初始化字段时,字段的初始值是什么?
答案是,字段先在创建时被初始化,然后再调用构造方法,被构造方法初始化,所以最终的值是构造方法初始化的值

多构造方法

可以创建多个构造方法,在操作new操作符的时候,编译器根据传入参数个数、位置、类型的不同自动区分。

class Person{
	private String name;
	private int age;
	
	public Person(String name){
		this.name = name;
		}
	public Person(Sting name,int age){
		this.name = name;
		this.age = age;
		}
	public Person(){
	}
}
	

一个构造方法中可以用this(…)调用另一个构造方法,便于代码复用

public Person(String name,int age){
	this.name = name;
	this.age = age;
	}
public Person(String name){
	this(name,18) //此处调用了Person(String name,int age)方法
	}
public Person(){
	this("unnamed") //此处调用了Person(String name)方法
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值