为了账号安全,请及时绑定邮箱和手机立即绑定

最后的练习:如果在父类中不写方法直接用toString(),子类继承父类,为何输出的结果不能显示子类的名称?

父类页:

public class Tarric {

int num;

@Override

public String toString() {

return "Tarric [num=" + num + "]";

}



测试页中:

public static void main(String[] args) {

Tarric bus=new Tarric();

Tarric ship=new Tarric();

Tarric plane=new Plane();

bus.num=40;

ship.num=200;

plane.num=100;

System.out.println(bus);

System.out.println(ship);

System.out.println(plane);

}


运行结果

http://img1.sycdn.imooc.com//565fb6e00001c29503350144.jpg

正在回答

3 回答

//重写的概念是:子类重写父类的方法叫重写
//重载的概念是:重写本类中的方法,其方法名相同,参数列表不同(包括顺序,类型等等)
//那为什么要重写父类的方法呢?
//因为父类的方法不满足要求,就好像你刚才要输出子类的类名,父类的toString是没办法完成的。因此只有子///类自己重写实现了
//IDE工具一般都是有快捷键(ctrl + alt + s)自动重写toString方法的。而且有个编程规范就是每建一个类最好//都重写toString方法


0 回复 有任何疑惑可以回复我~
#1

coocoo爱上猫 提问者

好的,非常感谢你的回答~
2015-12-03 回复 有任何疑惑可以回复我~
public String toString() {
return "Tarric [num=" + num + "]";
}
//这段里面根本就没有输出子类名称的语句。
//还是没怎么懂你的意思,Tarric这个类是父类,它重写了Object类的toString方法,
//就是这一句话"Tarric [num=" + num + "]"这句话只是输出了类中的属性NUM
假设有个类叫A  A extends Tarric 要想输出子类的类名的话,子类也得重写Tarric这个父类的toString方法。


1 回复 有任何疑惑可以回复我~
#1

coocoo爱上猫 提问者

用 toString方法 一定要重写子类方法么?
2015-12-03 回复 有任何疑惑可以回复我~

没有看到你的子类

0 回复 有任何疑惑可以回复我~
#1

coocoo爱上猫 提问者

子类中没有内容,直接继承父类方法 就是 Plane子类改了一点为了突出不一样
2015-12-03 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

最后的练习:如果在父类中不写方法直接用toString(),子类继承父类,为何输出的结果不能显示子类的名称?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信