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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 林康春 黑马帝   /  2012-2-22 18:35  /  2030 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 林康春 于 2012-2-24 17:19 编辑

/*需求:
        设计一个表示用户的User类,类中的变量有用户名,口令和记录用户个数的变量,定义类的三个构造方法(无参,为用户名赋值,
        为用户名和口令赋值),获取和设置口令的方法和返回类信息的方法。
*/

class User
{
        private String name ;
        private String password;
        private int number;
        public User()
        {
                System.out.println("一个新的User对象被实例化");
        }
        public User(String name)
        {
                this();
                this.name=name;
        }
        public User(String password,int number)
        {
                this();
                this.password=password;
                this.number=number;
        }
        public String getInfo()
        {
                return "用户名:"+name+",口令:"+password+",用户个数:"+number;
        }
}
class  UserDemo
{
        public static void main(String[] args)
        {
                User u=new User("gfdgdfgdf",3);
                System.out.println(u.getInfo());
        }
}
结果:
一个新的User对象被实例化
用户名:null,口令:gfdgdfgdf,用户个数:3

怎么样才可以达到用户名也有呢

评分

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

查看全部评分

6 个回复

倒序浏览
本帖最后由 丁晓宇 于 2012-2-22 18:56 编辑
  1. //定义类的三个构造方法
  2. //无参
  3. public User() { }

  4. //为用户名赋值,
  5. public User(String name) {
  6.         this.name = name;
  7. }
  8. //为用户名和口令赋值
  9. public User(String name, String password) {
  10.         this.name = name;
  11.         this.password = password;
  12. }
  13. // 让用户名也有
  14. public User(String name, String password, int number) {
  15.         this.name = name;
  16.         this.password = password;
  17.         this.number = number;
  18. }

复制代码

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 马胜平 于 2012-2-22 19:07 编辑

可以给name设置一对set get方法,或在设计一个构造方法实例化所有成员!
回复 使用道具 举报
本帖最后由 H07000223 于 2012-2-22 19:14 编辑

你new一个对象后,会根据你传进参数的类型、顺序、数量进行构造方法的匹配,到底调用哪一个。
而程序中你只传入了password,number根本没有name的信息,你叫他怎么给你编出来啊。
解决的方法:
     public User(String name,String password,int number)
        {
                this(name);
                this.password=password;
                this.number=number;
        }
将原来两个参数的构造方法改造下传入三个参数:想获得name值你好歹的传个给他吧,亲!!!

评分

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

查看全部评分

回复 使用道具 举报
但要求只能三个构造方法阿
回复 使用道具 举报
丁晓宇 发表于 2012-2-22 18:53

想请教你一下,这种帖代码的方式是怎么操作?

点评

<code> // 代码 </code>  发表于 2012-2-24 03:50
回复 使用道具 举报
沈样 黑马帝 2012-2-23 11:29:37
7#
你调的方法不对public User(String password,int number)
        {
                this();
                this.password=password;
                this.number=number;
        }
这个方法调了没有构造函数的方法,这个方法中没有对name进行付值,要调用this(name)这个方法,然后把方法参数加个String name;这样就可以了

评分

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

查看全部评分

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