String类是final的,这样的话它的所有方法都是final的,可是为什么可以重写toString()方法?

解决方案 »

  1.   

    final的没有问题,但是你重写的toString方法也不是重写的String这个类的方法
    比如你声明一个类A,你重写toString实际上是重写的A的这个方法,也不是String的啊
    即便A也是final,仍然可以在A里面重写toString,只是A无法被继承而已你觉得还有什么困惑?
      

  2.   

    String 类的方法是不能被重写的。
    Object类本身有一个toString()方法的,你重写的可能是此类的方法,或许其他类(其他本质也是从Object 类继承而来的。)
      

  3.   

    哦。之前看错了,以为toString()方法只有String类中有。那可不可以这样理解。java类默认继承Object类,而toString()是Object类的一个方法,所以不论该java类是否是final类型的都可以重写toString()方法。而假设Object类是final的话就不可以重写toString()方法了。
      

  4.   

    非常正确,理解的很对,Object这个类里面有toString()方法,因为其不是final的,所以可以继承和改写问题解决就结贴哈
      

  5.   

    你重写的又不是String类的toString方法