Java中的对象构造常用的几种方法

Java中提供了多种编写构造器的机制。

一、重载
有些类有多个构造器,比如说,构造StringBuilder类的一个空的对象可以用以下的方法;

StringBuilder messages=new StringBuilder();
//或者也可指定一个初始的字符串
StringBuilder todoList=new StringBuilder("To do:\n");

这就叫做方法的重载,如果多个方法(比如说StringBulider的构造器方法)有着相同的名字、不同的参数,这就产生了重载。编译器会根据参数类型来寻找最匹配的方法,如果找不到这种方法,就会产生编译错误。编译器寻找匹配方法的过程称为重载解析。

如果完整的对一个方法进行描述,必须有该方法的名称以及相应的参数类型,这个过程叫做方法的签名(Signature)例如,String类有indexOf的公有方法,如果进行签名的话,就是以下几种

indexOf(int)
indexOf(int,int)
indexOf(String)
indexOf(String,int)

二、默认域初始化

如果在构造器中并没有显式的给域赋初值,那么域就会被默认的肤质,比如说将树脂赋值为0,布尔值为false,对象引用为null。

三、无参构造器

在编写构造器时无参数,那么对象在实例化的过程中就会被设置为默认值,以下就是一个无参构造器的编写方法:

public Employee(){
	name="";
	salary=0;
	........
}

如果在编写一个类时没有编写构造器,那么系统就会自己提供一个默认的构造器,将所有实例域设置为默认值。

四、显式域的初始化

可以通过调用方法对域进行初始化。以下:

class Employee{
	private int id=assignid();;
	private static int nextid;
	private static int assignid(){
	int r=nextid;
	nextid++;
	return r;
}
}

五、参数名

在编写很小的构造器时,可以使用这样一种技巧,使用this关键字,this指示隐式参数,也就是所构造的对象。可以选择使用this.的形式来访问实例域,并将其赋值给构造器,示例:

public Employee(String name,double salary){
		this.name=name;
}

六、使用初始化块进行初始化数据域

{
id=nextid;
nextid++;
}

调用构造器有如下的顺序
1) 所有数据域被初始化为默认值(0、false、null等)
2)按照在类声明中出现的次序,依次执行所有域初始化语句和初始化块
3)如果调用第二个构造器进行初始化,那么执行第二个构造器主体
4)执行当前构造器主题

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值