Java中构造方法的作用

初学Java的构造方法时,根本不能理解构造方法有什么用,自己写程序的时候也从来没有用过。于是刚开始我写的程序是这样的:

package test3;
public class Student {
 private String name;
 private long ID;
 private double score;

 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public long getID() {
  return ID;
 }
 public void setID(long iD) {
  ID = iD;
 }
 public double getScore() {
  return score;
 }
 public void setScore(double score) {
  this.score = score;
 }
 public static void main(String[] args) {
  Student s = new Student();
  s.setName("张三");
  s.setID(170316);
  s.setScore(86.0);
  System.out.println("学号为" + s.getID + "的" + s.getName() + "的成绩为" + s.getScore + "分。");
 }
}

然后我发现,这样写程序有弊端。就是比如我要登记学生的基本情况,有姓名、学号、年级班级、成绩等等好多情况,如果有很多属性,同时实例化了好多对象,我可能就会忘记忘记初始化一些属性;同时,这样还需要写许多get和set方法,虽然可以由eclipse自动生成,但还是显得代码很冗长,不便于阅读。这个时候就显示出构造方法的重要性了。

构造方法的主要作用就是创建对象。

构造方法分为有参数和没有参数两种。有参数的构造方法主要就是用于对创建出来的对象进行初始化,比如下边这个例子:

package test3;

public class Test_Constructor1 {

 private String name;
 private String gender;
 private long ID;
 private long birthday;

 Test_Constructor1(String name, String gender, long ID, long birthday) {
  this.name = name;
  this.gender = gender;
  this.ID = ID;
  this.birthday = birthday;
 }
 public static void main(String[] args) {
  Test_Constructor1 s = new Test_Constructor1("Lily", "女", 100001, 200000226);
  System.out.println("姓名:" + s.name +  " 性别:" + s.gender + " 学号:" + s.ID + " 生日:" + s.birthday);
 }
}

在控制台的输出结果如下:
在这里插入图片描述
这样在new一个对象出来的时候,就对它进行了初始化,避免了某些属性忘记初始化的问题;同时可以看出代码长度远小于上一个例子,提高了程序的可阅读性。

另一种是没有参数的构造方法,又叫缺省构造方法。其实,你的类如果没有定义任何构造方法,Java的编译器会配上一个自动缺省构造方法,这个构造方法是空的,不做任何事情,只是为了满足编译需要。或者,你也可以自己写一个空的构造方法,在里边对一些属性赋值,或者执行一些其他操作,比如下边这个例子:

package test3;

public class Test_Constructor2 {
 private int i;

 Test_Constructor2() {
  i = 5;
  System.out.println("i的值是" + i);
 }
 public static void main(String[] args) {
  Test_Constructor2 s = new Test_Constructor2();
 }
}

在控制台的输出结果如下:
在这里插入图片描述
没有参数的构造方法创建对象时也会被调用。创建对象时,首先变量中的所有变量会得到零值,然后执行定义初始化,最后执行构造方法。

其实,构造方法的主要作用就是为对象成员变量赋初始值,总是与new运算符一起使用在创建对象的语句中——也就是说,只要你new一个对象出来,就会相应地调用这个类的构造方法。有参数的构造方法可以对对象进行初始化,但建议写了有参的构造方法后再写一个无参的空的构造方法,便于创建一个对象而不给它的成员变量赋初值。要注意,自己写了有参的构造方法,编译器是不会再补充一个缺省构造方法的。

  • 116
    点赞
  • 270
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值