黑马程序员技术交流社区

标题: 关于构造函数! [打印本页]

作者: wdj    时间: 2015-6-7 14:57
标题: 关于构造函数!
刚学到构造函数一节,但还是有点不明白什么时候需要构造函数初始化呢.
作者: Smile小思    时间: 2015-6-8 17:10
这个其实到后期真正运用到了,不用问你自己就会去想到使用构造函数了,举个例子,像如果创建一个学生类的话,只要是学生就肯定有姓名,性别,年龄,学号之类的属性,还可能有其他的属性,而且属性可能会有点多,那么这个时候创建对象然后一个个的对属性进行赋值那简直太麻烦了,这个时候就可以用到构造函数了,举个例子如下,一个构造函数就可以实现在创建对象时给所有的属性赋值,这样岂不是简单很多
  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.         }

复制代码

作者: Smile小思    时间: 2015-6-8 17:14
另外一点,有些情况下必须使用构造函数初始化对象,还是学生这个例子,是学生就必须有名字,没名字的学生我还没见过,所以如果出现你创建了一个学生对象,但是不给姓名赋值,那么这肯定是不合理的,所以这个时候就可以写有参数的构造函数,而不写无参的构造函数,实际上就是限定了对象的创建,只要你想创建学生对象,那么就必须传入参数,也就是姓名之类的属性,不然无法创建,这样就合理了
作者: 杜弦东.    时间: 2015-6-8 17:20
初始化 != 赋值. a.初始化代表为变量分配内存. 变量在其定义处被编译器初始化(编译时). 在函数中, 函数参数初始化发生在函数调用时(运行时). b.赋值代表"擦除对象当前值, 赋予新值". 它不承担为对象分配内存的义务.2. C++中, 类成员的初始化于初始化列表中完成, 先于构造函数体执行. 即成员真正的初始化发生在初始化列表中, 而不是构造函数体中
作者: 邱石    时间: 2015-6-8 18:00
当你创建对象时,如new Student();这里就用到了无参构造函数。
作者: 一休    时间: 2015-6-8 21:23
当你创建对象时需要对成员变量赋值的时候




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2