黑马程序员技术交流社区

标题: 问一个关于构造器的问题?? [打印本页]

作者: Gaara    时间: 2013-1-27 16:34
标题: 问一个关于构造器的问题??
我是一个新手,最近看到毕老师视频面向对象那部分。但刚开始挺明白,越往后越迷糊有一种云里雾里的感觉。
(可能是一下看太多了)

特别是构造器上面想问下:构造器是用来赋值初始化的。例如:
class  Test{
           public String name ="zhangsan";
}

这样直接赋值不行吗??

为什么要用构造器啊?还有构造器除了初始化外,没其他作用了??
作者: vmvm555    时间: 2013-1-27 16:53
你这样写,程序就写死了,你不管new出多少对象他的name属性都是"zhangsan",构造器能动态的为对象的属性赋值,这样增加了程序的灵活性,另外,构造器也有重载的实现,通过不同的构造器创建出不同的属性值的对象来增加程序的灵活性
作者: 黄鸿达    时间: 2013-1-27 16:57
构造器就是提供一个可以修改成员变量的方法。比如你有个学生类,里面有名字,年龄之类的成员变量。然后通过传入参数,构造器就通过这些参数来进行成员变量的初始化。如果你这样直接赋值,就代表任何人都可以直接修改里面的值,涉及到安全性。通常成员变量都设private私有来保证外界不随意修改里面的值,而本类提供一些有限制的方法来让你赋值。
作者: 贾文泽    时间: 2013-1-27 17:20
class  Test{
           public String name ="zhangsan";
}
你这样写的话就把程序写死了,new出来的每一个对象的name都是“zhangsan”
但是通过构造函数传入变量的值初始化就一切OK了,每个人都有不同的名字
class  Test{
           private String name;
           public void Test(){
                  this name=name;
           }
}
Test stu1=new Test("zhangsan");
作者: Gaara    时间: 2013-1-27 20:03
哦 谢谢大家回答了  明白了




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