黑马程序员技术交流社区

标题: 这个javabean的代码不太理解 [打印本页]

作者: study123    时间: 2013-8-25 20:57
标题: 这个javabean的代码不太理解
本帖最后由 杨增坤 于 2013-8-27 22:12 编辑

public class SmsInfo {
        private String body;
        private String number;
        private int type;
        public SmsInfo(){}
        public SmsInfo(String body, String number, int type) {
                this.body = body;
                this.number = number;
                this.type = type;
        }
        public String getBody() {
                return body;
        }
        public void setBody(String body) {
                this.body = body;
        }
        public String getNumber() {
                return number;
        }
        public void setNumber(String number) {
                this.number = number;
        }
        public int getType() {
                return type;
        }
        public void setType(int type) {
                this.type = type;
        }
        
}

这个javabean中为什么要加一个无参的构造函数和一个有参的构造函数呢?表示什么意思?


作者: 相许。    时间: 2013-8-25 21:03
设置一个有参的构造函数用于在创建对象的时候赋初始值,这时候默认的无参的构造函数就没有了,只能通过有参构造方法来创建对象,这样灵活性就降低了。所以要显式的写一个空的构造方法,在开发中方便使用而已。
作者: study123    时间: 2013-8-25 21:14
相许。 发表于 2013-8-25 21:03
设置一个有参的构造函数用于在创建对象的时候赋初始值,这时候默认的无参的构造函数就没有了,只能通过有参 ...

我也知道当写了一个有参的构造函数后,会覆盖默认的无参构造函数,所以需要显式的再写一个无参的构造函数。可我不明白的是,那个无参的构造函数还有什么用途呢?为什么一定要写那个无参的构造函数呢?

作者: 相许。    时间: 2013-8-25 21:20
本帖最后由 相许。 于 2013-8-25 21:22 编辑
study123 发表于 2013-8-25 21:14
我也知道当写了一个有参的构造函数后,会覆盖默认的无参构造函数,所以需要显式的再写一个无参的构造函数 ...

你只写了一个有参构造方法,直接就可以赋值给属性了,那如果不想在创建对象的时候就赋值,想通过set和get方法赋值和读取呢?那这个对象是不是就不能被创建了呢?有参构造方法是为了方便的在创建对象的时候赋初始值,但是一个默认的无参构造方法也是不可或缺的。况且子类继承父类的时候会自动继承父类的默认构造函数(也就是继承那个无参数的构造函数)。而你的类里面已经有一个带有参数的构造函数了,如果你没有写那个默认的不带参数的构造函数的话,继承的时候子类就会报错,因为系统不知道要不继承哪个构造函数,必须明确的使用super()关键字来描述。所以我们一般为了避免这种错误的发生,在有带有多个构造函数的类里面都会写一个不带参数的构造函数。

作者: xscn    时间: 2013-8-25 21:30
本帖最后由 xscn 于 2013-8-25 21:32 编辑

重点不在有参构造函数而在无参构造函数,javabean这个特殊类必须要有一个无参构造函数,有参的构造函数有没有无所谓,作用只是方便初始化而已。
javabean是种遵循某种严格协议的特殊的Java类,主要用于传递数据信息,没有无参构造函数,工具无法实例化其对象,无法newInstance()。




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