如何在Object类中使用getName()方法?

时间:2014-08-31 14:32:39

标签: java

我是JAVA语言的新学习者。在JAVA中,Object类是类层次结构中的根类(或)最顶级的超类(每个类都是Object的子类)。因此,我们创建的每个类都有Object类的11个方法(如JAVA API中所述),我们可以使用它们,如toString()方法。

但是toString()方法的定义使用了一个方法getName(),它没有在Object类中定义。 (我知道toString()方法使用getName()方法,因为我使用了jd-gui来查看我个人电脑中安装的Object.class文件的源代码。)

如果我们创建一个java文件

class test {
   public static void main(String args[]) {
      test t = new test();
      System.out.println(t.getClass().getName());
/* Don't understand how I am able to use getName() method without extending any other
*class containing *getName() method.*/
  }
}

上面给出了“test”作为输出而没有错误。

来到Object类它是根类,所以它不扩展任何其他类并且做任何工作它应该定义自己的方法。

我的问题是, 我们定义的Object类和类如何能够在不在类中定义getName()方法的情况下使用此方法?

除Object类之外是否还扩展了其他类?

1 个答案:

答案 0 :(得分:6)

getName()Class类的方法,而不是Object类。 Object有一个getClass()方法,可返回Class个实例。

t.getClass()返回Class<test>的实例,该实例的方法为getName()。 这样您就可以拨打t.getClass().getName()