黑马程序员技术交流社区

标题: 构造函数中定义了构造方法,为什么还必须保留一个无参..... [打印本页]

作者: 只想要一盏灯    时间: 2013-10-15 15:43
标题: 构造函数中定义了构造方法,为什么还必须保留一个无参.....
本帖最后由 只想要一盏灯 于 2013-10-15 18:17 编辑

在资料上看到一个习题,分析的时候有这么一段话:以后拿到一个编写类的程序,按照以下的步骤编写代码:
        1、根据要求写出类的名称;
        2、根据要求定义出类中所应该包含的属性;
        3、所有的属性必须封装;
        4、封装之后的属性必须通过setter 和getter设置和取得;
        5、根据其他的要求编写出相应的方法;
        6、所有的输出不能在类中直接完成,而是交给被调用处输出;
        7、根据实际的情况添加构造方法,但是不管类中有多少个构造,一定要保留一个无参构造方法。

1-6点可以理解,第7条为什么啊?求高手指教,谢谢!



作者: 枫儿    时间: 2013-10-15 15:50
这是java bean的规范.一般都要有一个无参构造器,好处就是你以后只需要new Employee(),然后通过setXXX()方法给这个对象赋属性值,而无需要通过new Employee(......一大坨属性),因为有时候new对象的时候你还不知道具体属性是什么!
作者: ☆╰學不会☆╮    时间: 2013-10-15 16:03
因为在一个类中如果想新建对象 都会有一个默认隐藏的无参数的构造方法。如果一旦添加其他有参数的构造方法了 那么那个无参的构造方法就会消失,就不能新建无参的对象了;
public class  Person{
     private String name;
     priavte int age;
     person(){}
     person(String name,int age ){
    this.name=name;
    this.age=age;
}
public static void main(String[] args){
  Person aa=new person();
  Person bb=new person("张三",20);
}
}
如果在这个类中 不添有参数的构造方法 那么只能新建无参数的对象 但是一旦添加有参构造方法了 默认无参数的构造方法就会消失 如果想建无参数对象 所以要保留一个无参数的构造方法。
作者: 郑齐育    时间: 2013-10-15 16:11
方便直接new对象,举例来说,比如你要冲服务器获取Perosn()类一些对象的信息(比如表格),通过解析服务端返回的信息,然后设置对象的具体信息,比如设置Person的年龄和姓名,你得先new Person()对象,才可以调用对象的set方法设置属性,还有解析xml文档时也是类似的状况。总之,有些时候你需要能通过无参的构造方法new对象。还有你这7步是一般做法,也要根据实际需求调整的。
作者: 杨晓燕    时间: 2013-10-15 16:58
枫儿 发表于 2013-10-15 15:50
这是java bean的规范.一般都要有一个无参构造器,好处就是你以后只需要new Employee(),然后通过setXXX()方法 ...

哎哟,不错哦
作者: 枫儿    时间: 2013-10-15 17:20
杨晓燕 发表于 2013-10-15 16:58
哎哟,不错哦

呵呵~杨姐多指教~~
作者: aion2013tian    时间: 2013-10-15 18:01
类在你建立时会自动添加一个隐藏的无参的构造方法,这样可以是你以后new这个类的对象时即使不知道他的参数也可以先得到它的对象进行应用;但是如果你建立了这个类的构造方法,那么这个无参的构造方法就不再有了,要想以后new这个类对象时不加入这个类的参数,就只能自己再给这个类加入一个无参的构造方法的啊。还有隐晦的一点儿,就是反射时会涉及到一点儿的啊
作者: 雷丹    时间: 2013-10-15 19:32
重载构造函数要不要无参构造都可以,要用那个构造函数就new对象的时候,根据构造函数参数输入参数




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