黑马程序员技术交流社区

标题: 请问下面的ToString方法为什么不起作用? [打印本页]

作者: zsq8210366    时间: 2016-11-22 20:33
标题: 请问下面的ToString方法为什么不起作用?
[Java] 纯文本查看 复制代码
public class Test2 {

        public static void main(String[] args) {
                People a = new American("Jonny");
                People b = new Chinese("李小龙");
                People c = new Chinese("成龙");
                People[] p = new People[]{a,b,c};

                for (People people : p) {
                        System.out.println(p);
                }

        }
}
class People{
        private String name;
        public People(String name) {
                super();
                this.name = name;
        }
       
        public String getName() {
                return name;
        }

        public String speak(){
                return "说话";
        }

        @Override
        public String toString() {
               
                return "不知道哪里人";
        }
       


       
}

class Chinese extends People{

        public Chinese(String name) {
                super(name);
               
        }

        @Override
        public String speak() {
               
                return "我说中国话";
        }

        @Override
        public String toString() {
               
                return "我叫"+getName()+"我来自中国";
        }
       
       
}

class American extends People{

        public American(String name) {
                super(name);
               
        }

        @Override
        public String speak() {
               
                return "I'm speak English";
        }

        @Override
        public String toString() {
               
                return "My name is "+getName()+",I'm from American";
        }
       
}


如上所示,输出结果是:
[Lcom.exam.zsq.People;@15db9742
[Lcom.exam.zsq.People;@15db9742
[Lcom.exam.zsq.People;@15db9742

请问我重写的toString方法为什么不生效?

作者: 乌托邦619    时间: 2016-11-22 20:51
输出people

作者: goog123    时间: 2016-11-22 21:47
for (People people : p) {
            System.out.println(p);   //要输出people
        }
作者: aA772807986    时间: 2016-11-22 22:17
你输出的是数组,而不是当前对象
作者: lieyemu    时间: 2016-11-22 22:25
路过              
作者: zsq8210366    时间: 2016-11-22 22:27
aA772807986 发表于 2016-11-22 22:17
你输出的是数组,而不是当前对象

懂了懂了,谢谢

作者: zsq8210366    时间: 2016-11-22 22:28
goog123 发表于 2016-11-22 21:47
for (People people : p) {
            System.out.println(p);   //要输出people
        }

明白啦,谢谢大神

作者: zsq8210366    时间: 2016-11-22 22:29
乌托邦619 发表于 2016-11-22 20:51
输出people

明白啦,自己搞混了。谢谢

作者: chenyanwei6    时间: 2016-11-22 23:09
一楼说的很对,代码对敲敲
作者: zhangpanqin    时间: 2016-11-22 23:55
方法重写的注意事项,返回值类型相同或者有子父类关系




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