2014-08-31 2 views
0

Я новый ученик JAVA Language. В JAVA класс Object является корневым классом (или) верхним большинством суперкласса в иерархии классов (каждый класс является подклассом Object). Поэтому каждый класс, который мы создаем, имеет 11 методов (как указано в JAVA API) класса Object, и мы можем их использовать, например, метод toString().Как метод getName() используется в классе Object?

Но определение метода toString() использует метод getName(), который не определен в классе Объект. (Я знаю, что метод 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.*/ 
    } 
} 

Вышеприведенное дает «тест» как выход без ошибок.

К классу Object это класс корня, поэтому он не расширяет другие классы и не выполняет какую-либо работу, он должен определять свои собственные методы.

Мой вопрос: Как определить класс и классы объекта, которые мы можем использовать, без определения метода getName() в своем классе?

Существуют ли какие-либо другие классы, кроме класса Object?

ответ

6

getName() - метод класса Class, а не класс Object. Object имеет метод getClass(), который возвращает экземпляр Class.

t.getClass() возвращает экземпляр Class<test>, который имеет способ getName(). Позволяет вам позвонить t.getClass().getName().

+0

Как класс «Объект» может использовать методы класса «Класс» без наследования или создания объекта. – Sudheer

+2

Посмотрите на свой код! Вы используете метод getClass(), который возвращает экземпляр класса. Просто как тот. – Dici

+0

@Sudheer Не нужно наследовать их. Он получает экземпляр класса с помощью метода getClass, а затем он может вызывать любой доступный метод класса для этого экземпляра. – Eran

Смежные вопросы