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

来源:10-1 Java 中的多态

coocoo爱上猫

2015-12-03 11:29

父类页:

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://img.mukewang.com/565fb6e00001c29503350144.jpg

写回答 关注

3回答

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


    coocoo...

    好的,非常感谢你的回答~

    2015-12-03 14:47:22

    共 1 条回复 >

  • HansonQ
    2015-12-03 13:37:20
    public String toString() {
    return "Tarric [num=" + num + "]";
    }
    //这段里面根本就没有输出子类名称的语句。
    //还是没怎么懂你的意思,Tarric这个类是父类,它重写了Object类的toString方法,
    //就是这一句话"Tarric [num=" + num + "]"这句话只是输出了类中的属性NUM
    假设有个类叫A  A extends Tarric 要想输出子类的类名的话,子类也得重写Tarric这个父类的toString方法。


    coocoo...

    用 toString方法 一定要重写子类方法么?

    2015-12-03 13:42:40

    共 1 条回复 >

  • HansonQ
    2015-12-03 13:30:06

    没有看到你的子类

    coocoo...

    子类中没有内容,直接继承父类方法 就是 Plane子类改了一点为了突出不一样

    2015-12-03 13:31:22

    共 1 条回复 >

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530714 学习 · 6091 问题

查看课程

相似问题