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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© study123 初级黑马   /  2013-8-25 20:57  /  1124 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨增坤 于 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中为什么要加一个无参的构造函数和一个有参的构造函数呢?表示什么意思?

评分

参与人数 1技术分 +1 收起 理由
薛鹏鹏 + 1

查看全部评分

4 个回复

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

我也知道当写了一个有参的构造函数后,会覆盖默认的无参构造函数,所以需要显式的再写一个无参的构造函数。可我不明白的是,那个无参的构造函数还有什么用途呢?为什么一定要写那个无参的构造函数呢?
回复 使用道具 举报
本帖最后由 相许。 于 2013-8-25 21:22 编辑
study123 发表于 2013-8-25 21:14
我也知道当写了一个有参的构造函数后,会覆盖默认的无参构造函数,所以需要显式的再写一个无参的构造函数 ...

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

评分

参与人数 1技术分 +2 收起 理由
田磊阳 + 2

查看全部评分

回复 使用道具 举报
本帖最后由 xscn 于 2013-8-25 21:32 编辑

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

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马