A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wdj 中级黑马   /  2015-6-7 14:57  /  505 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

刚学到构造函数一节,但还是有点不明白什么时候需要构造函数初始化呢.

5 个回复

倒序浏览
这个其实到后期真正运用到了,不用问你自己就会去想到使用构造函数了,举个例子,像如果创建一个学生类的话,只要是学生就肯定有姓名,性别,年龄,学号之类的属性,还可能有其他的属性,而且属性可能会有点多,那么这个时候创建对象然后一个个的对属性进行赋值那简直太麻烦了,这个时候就可以用到构造函数了,举个例子如下,一个构造函数就可以实现在创建对象时给所有的属性赋值,这样岂不是简单很多
  1. public class Student{
  2.        private String name;
  3.        private String sex;
  4.        private int age;
  5.        private int idCode;
  6.         public Student(String name, String sex, int age, int idCode) {
  7.                 super();
  8.                 this.name = name;
  9.                 this.sex = sex;
  10.                 this.age = age;
  11.                 this.idCode = idCode;
  12.         }

复制代码
回复 使用道具 举报
另外一点,有些情况下必须使用构造函数初始化对象,还是学生这个例子,是学生就必须有名字,没名字的学生我还没见过,所以如果出现你创建了一个学生对象,但是不给姓名赋值,那么这肯定是不合理的,所以这个时候就可以写有参数的构造函数,而不写无参的构造函数,实际上就是限定了对象的创建,只要你想创建学生对象,那么就必须传入参数,也就是姓名之类的属性,不然无法创建,这样就合理了
回复 使用道具 举报
初始化 != 赋值. a.初始化代表为变量分配内存. 变量在其定义处被编译器初始化(编译时). 在函数中, 函数参数初始化发生在函数调用时(运行时). b.赋值代表"擦除对象当前值, 赋予新值". 它不承担为对象分配内存的义务.2. C++中, 类成员的初始化于初始化列表中完成, 先于构造函数体执行. 即成员真正的初始化发生在初始化列表中, 而不是构造函数体中
回复 使用道具 举报
当你创建对象时,如new Student();这里就用到了无参构造函数。
回复 使用道具 举报
当你创建对象时需要对成员变量赋值的时候
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马