我是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类之外是否还扩展了其他类?
答案 0 :(得分:6)
getName()
是Class
类的方法,而不是Object
类。 Object
有一个getClass()方法,可返回Class
个实例。
t.getClass()
返回Class<test>
的实例,该实例的方法为getName()。
这样您就可以拨打t.getClass().getName()
。