我是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.*/
}
}
Run Code Online (Sandbox Code Playgroud)
上面给出了"test"作为输出而没有错误.
来到Object类它是根类,所以它不扩展任何其他类并且做任何工作它应该定义自己的方法.
我的问题是,我们定义的Object类和类如何能够在不在类中定义方法的情况下使用此方法getName()?
除了Object类之外,是否还扩展了其他类?
getName()是Class类的方法,而不是Object类.Object有一个getClass()方法返回一个Class实例.
t.getClass()返回一个实例Class<test>,其实例包含getName()方法.这允许你打电话t.getClass().getName().