【问题标题】:Why can class objects call the toString method if the class does not provide an implementation for the method?如果类不提供方法的实现,为什么类对象可以调用 toString 方法?
【发布时间】:2014-11-29 19:57:01
【问题描述】:

有人可以解释为什么任何类对象都可以调用 toString 方法,即使该类没有提供该方法的实现。

在这种情况下会发生什么,当一个类确实提供了 toString 方法实现时会发生什么?

【问题讨论】:

  • 因为每个类都隐式扩展了Object,而toString是在Object类中实现的。
  • 这就是子类化和多态的魔力!
  • Object javadoc: "类 Object 是类层次结构的根。每个类都有 Object 作为超类。所有的对象,包括数组,都实现了这个类的方法。"

标签: java tostring


【解决方案1】:

每个 Java 类都是Object 类的子类。

因此,通过继承Object 类中可用的所有操作在每个Java 类中都可用。这包括 toString() 操作:)。

【讨论】:

    【解决方案2】:

    java 中的每个类都从 Object 类扩展而来,它是一个单根层次结构,Object 类有一个定义的 toString 方法,所以当你尝试用你的类对象调用它时,它可以工作!

    由于 toString 方法从 Object 类继承到您的类

    此外,您可以在任何类中重写 toString 方法,它的返回类型是 String,因此在重写该方法后,如果您使用类的对象调用 toString,那么它将执行您在该类中编写的 toString 方法你的,而不是默认提供的一个 Object 类

    【讨论】:

      【解决方案3】:

      基本上,由于每个类都扩展Object,调用 toString 调用Object 实现,除非该类提供它自己的实现。默认方法返回一个字符串,其中包含有关该类的一些信息。覆盖它可以让你返回任何你想要的东西。

      请看这里:https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#toString()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-08-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-29
        • 1970-01-01
        相关资源
        最近更新 更多