黑马程序员技术交流社区

标题: 怎么可以实现调用的功能呢 ? [打印本页]

作者: 林康春    时间: 2012-2-22 18:35
标题: 怎么可以实现调用的功能呢 ?
本帖最后由 林康春 于 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

怎么样才可以达到用户名也有呢
作者: 丁晓宇    时间: 2012-2-22 18:53
本帖最后由 丁晓宇 于 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. }

复制代码

作者: 马胜平    时间: 2012-2-22 18:57
本帖最后由 马胜平 于 2012-2-22 19:07 编辑

可以给name设置一对set get方法,或在设计一个构造方法实例化所有成员!
作者: H07000223    时间: 2012-2-22 19:13
本帖最后由 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值你好歹的传个给他吧,亲!!!
作者: 林康春    时间: 2012-2-22 19:32
但要求只能三个构造方法阿
作者: 王康    时间: 2012-2-23 11:14
丁晓宇 发表于 2012-2-22 18:53

想请教你一下,这种帖代码的方式是怎么操作?
作者: 沈样    时间: 2012-2-23 11:29
你调的方法不对public User(String password,int number)
        {
                this();
                this.password=password;
                this.number=number;
        }
这个方法调了没有构造函数的方法,这个方法中没有对name进行付值,要调用this(name)这个方法,然后把方法参数加个String name;这样就可以了





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