java构造方法

一.什么是构造方法

构造方法其实就是一种特殊的方法,有多特殊呢?它没有返回值,连void都没有!它的方法名就是类名,下面就是一个构造方法:

public class Father {
	
	public Father() {//构造方法
		
	}
	
	public static void main(String[] args) {
		Father father=new Father();
	}
}

 二.构造方法的作用

构造方法长得这么奇怪,究竟有什么作用呢?当我们想对一个类中的多个属性赋值时,可能你会这么一个一个的赋值:

public class Father {

	String id;
	String name;
	String compony;
	String punchline;
	
	public static void main(String[] args) {
		Father father=new Father();
		father.id="贝贝";
		father.name="李京泽";
		father.compony="红花会";
		father.punchline="万里挑一";
	}
}

 你不觉得这样太麻烦了么?而构造方法就是用来解决这个问题,它使赋值过程变得简化,就像下面这样赋值,是不是简单多了?

public class Father {

	String id;
	String name;
	String compony;
	String punchline;
	
	
	public Father(String id, String name, String compony, String punchline) {
		this.id = id;
		this.name = name;
		this.compony = compony;
		this.punchline = punchline;
	}//自定义一个新的构造方法


	public static void main(String[] args) {
		Father father=new Father("贝贝","李京泽","红花会","万里挑一");
	}//只需将要赋的值当做参数输入即可
}

三.如何使用构造方法

上述的例子可以看出来,创建对象时的new Father()就是在调用一个无参构造方法,但是类中并没有这么个构造方法的定义,所以就可以推断出,类中都是有一个默认的无参构造方法的,当类中没有自定义的构造方法时,默认的构造方法就起作用了,但是下面这段代码,当自定义了一个构造方法之后,再调用无参构造方法时,便会报错,是因为自定义无参构造方法之后默认的构造方法便会失效:

public class Father {

	String id;
	String name;
	String compony;
	String punchline;
	
	
	public Father(String id, String name, String compony, String punchline) {
		this.id = id;
		this.name = name;
		this.compony = compony;
		this.punchline = punchline;
	}


	public static void main(String[] args) {
		Father father=new Father("贝贝","李京泽","红花会","万里挑一");
		Father son = new Father ();//报错
	}
}

但这时要是还想使用无参构造方法怎么办?很简单,像文章开头那段代码一样再定义一个无参构造方法就好了:

public class Father {

	String id;
	String name;
	String compony;
	String punchline;
	
	public Father() {
		
	}
	
	public Father(String id, String name, String compony, String punchline) {
		this.id = id;
		this.name = name;
		this.compony = compony;
		this.punchline = punchline;
	}


	public static void main(String[] args) {
		Father father=new Father("贝贝","李京泽","红花会","万里挑一");
		Father son = new Father ();
	}
}

这时会发现,一个类中有两个名为Father的构造方法了,但是不要担心,不要忘记java中有方法的重载,这两个方法只要参数列表不相同,重载就有效。

虽然上面那一大段一点一点输入其实也不轻松,但是编译器中可以自动创建构造方法的,操作如下:

在类中的空白行右键单击,选择Source,选择Generate Constructor using Fields:

然后选择select all,点击OK,一个构造方法就自定义完成了

四.构造方法的特殊用法

构造方法还有个小用法就是可以在构造方法中使用this()来调用其他构造方法,就像下面这段代码这样:

public class Father {

	String id;
	String name;
	String compony;
	String punchline;
	
	public Father() {
		System.out.println("构造方法");
	}
	
	public Father(String id, String name, String compony, String punchline) {
		this();//调用无参构造方法
		this.id = id;
		this.name = name;
		this.compony = compony;
		this.punchline = punchline;
	}


	public static void main(String[] args) {
		Father father=new Father("贝贝","李京泽","红花会","万里挑一");
	}
}

但是要注意一点就是,构造方法中this()之前不能有代码,否则编译器会报错

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值