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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

[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方法为什么不生效?

9 个回复

倒序浏览
回复 使用道具 举报
for (People people : p) {
            System.out.println(p);   //要输出people
        }
回复 使用道具 举报
你输出的是数组,而不是当前对象
回复 使用道具 举报
路过              
回复 使用道具 举报
aA772807986 发表于 2016-11-22 22:17
你输出的是数组,而不是当前对象

懂了懂了,谢谢
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
goog123 发表于 2016-11-22 21:47
for (People people : p) {
            System.out.println(p);   //要输出people
        }

明白啦,谢谢大神
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
乌托邦619 发表于 2016-11-22 20:51
输出people

明白啦,自己搞混了。谢谢
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
一楼说的很对,代码对敲敲
回复 使用道具 举报
方法重写的注意事项,返回值类型相同或者有子父类关系
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马