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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孙百鑫 高级黑马   /  2013-3-11 22:57  /  1293 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

求助啊
class Person
{
        private String name;
        private int age;
        Person()
        {
                System.out.println("A"+"name="+name+",,age="+age);
                speak();
        }
        Person(String b)
        {
                System.out.println("A"+"name="+name+",,age="+age);
                speak();
        }
        public void setName(String n)
        {
                name=n;
        }
        public String getName()
        {
                return name;
        }
        Person(String n,int c)
        {
                name=n;
                age=c;
                System.out.println("C"+"name="+name+",,age="+age);
                speak();
        }
        void speak()
        {
                System.out.println("cay...............");
        }
}
class PersonDemo1
{
        public static void main(String[] args)
        {
                //Person p=new Person();
                Person p1=new Person("大黄");
                System.out.println(p1.getName);
                //Person p2=new Person("阿凯",28);
                //p.speak();
                //p.speak();
        }
}

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

7 个回复

倒序浏览
看了好久。也没啥问题啊。。。。。
回复 使用道具 举报
返回值应该是大黄吧
回复 使用道具 举报
本帖最后由 徐升2013 于 2013-3-11 23:03 编辑

你想问的是什么?你那个getName忘写括号了- -汗  问题大了,你不看看你调用的是哪个构造方法- -
回复 使用道具 举报
徐升2013 发表于 2013-3-11 23:01
你想问的是什么?你那个getName忘写括号了- -汗  问题大了,你不看看你调用的是哪个构造方法- - ...

那个括号我看见了。。我改了。。。。但是打印出来的是空啊
回复 使用道具 举报
孙百鑫 发表于 2013-3-11 23:05
那个括号我看见了。。我改了。。。。但是打印出来的是空啊

你只传入了一个String类型的参数,所以调用的是Person(String b)这个构造方法!该构造方法只打印了一次,调用了speak一次!所以打印才是空!
回复 使用道具 举报
樊玲 中级黑马 2013-3-11 23:34:13
7#
class Person
{
        private String name;
        private int age;
        Person()
        {
                System.out.println("A"+"name="+name+",,age="+age);
                speak();
        }
        Person(String n)
        {
                            name=n;                                                                        
                System.out.println("A"+"name="+name+",,age="+age);
                speak();
        }
        public void setName(String name)
        {
                this.name=name;
        }
        public String getName()
        {
                return name;
        }
        Person(String n,int c)
        {
                name=n;
                age=c;
                System.out.println("C"+"name="+name+",,age="+age);
                speak();
        }
        void speak()
        {
                System.out.println("cay...............");
        }
}
class PersonDemo1
{
        public static void main(String[] args)
        {
                //Person p=new Person();
                Person p1=new Person("大黄");
                System.out.println(p1.getName());
                //Person p2=new Person("阿凯",28);
                //p.speak();
                //p.speak();
        }
}

注:构造函数未写name=n 前,你的执行结果就会变成Aname=null,,age=0  cay...............null  因为你默认使的是第二个有参构造函数,
但是,没有接收这个名字。所以,name就会为null
当你接收name之后,初始化name 完成,结果变成了,Aname=大黄,,age=0 cay...............大黄
回复 使用道具 举报
樊玲 中级黑马 2013-3-11 23:35:24
8#
class Person
{
        private String name;
        private int age;
        Person()
        {
                System.out.println("A"+"name="+name+",,age="+age);
                speak();
        }
        Person(String n)
        {
                            name=n;                          //注意这里。。                                                       
                System.out.println("A"+"name="+name+",,age="+age);
                speak();
        }
        public void setName(String name)
        {
                this.name=name;
        }
        public String getName()
        {
                return name;
        }
        Person(String n,int c)
        {
                name=n;
                age=c;
                System.out.println("C"+"name="+name+",,age="+age);
                speak();
        }
        void speak()
        {
                System.out.println("cay...............");
        }
}
class PersonDemo1
{
        public static void main(String[] args)
        {
                //Person p=new Person();
                Person p1=new Person("大黄");
                System.out.println(p1.getName());
                //Person p2=new Person("阿凯",28);
                //p.speak();
                //p.speak();
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马