Подтвердить что ты не робот

Класс объекта как суперкласс в Java

Почему класс объектов суперкласс в Java?

4b9b3361

Ответ 1

Это хороший вопрос. Java решила сделать один класс конечным родительским классом для всего, чтобы был простой способ передать любой произвольный объект без необходимости знать его тип (т.е. Вы можете использовать объявленный тип объекта для обозначения каждого элемента в системе типов, даже примитивы, использующие их классы-оболочки). Однако существуют языки OOP, такие как С++, где нет универсального базового класса, как в Java. Еще одно преимущество наличия универсального базового класса заключается в том, что логика, связанная с суперклассом, не должна быть специальной оболочкой для классов верхнего уровня (за исключением универсального базового класса, самого объекта).

Ответ 2

Это то, что мы называем аксиомой объектно-ориентированного программирования в Java. Каждая абстракция в вашем коде - объект. Он содержит несколько вещей, которые применимы к каждому типу информации, которую вы используете в своем коде:

  • equals и hashCode, чтобы установить теорию равенства в пределах данной абстракции (см. соответствующий javadoc);
  • toString для представления объекта в удобочитаемом (возможно, только программистом) формате (поскольку большинство из нас все еще используют дисплеи и клавиатуры);
  • getClass, чтобы обеспечить возможности отражения в данной абстракции;
  • некоторые методы для организации объектно-ориентированной среды выполнения (сбор мусора, синхронизация и т.д.).

Если вы изучаете Java, вам лучше изучить раздел "Наследование" любой книги, которую вы используете, а затем попытаться ответить на этот вопрос самостоятельно.

Ответ 3

Сверху моей головы

  • Определение "объекта" в качестве корневого класса гарантирует, что виртуальная машина может опираться на интерфейс, предоставляемый для методов полезности, таких как equals, clone, hashcode и т.д.

  • Сборщик мусора может гарантировать, что все, что пользователь считает совместимым, может быть выполнено в методе finalize

Ответ 4

Он предоставляет шаблон для всех производных объектов, создаваемых программистами. Ключевыми функциональными возможностями, которые могут потребоваться для каждого определяемого пользователем объекта, легко доступны таким образом.

  • Блокировка объектов (для concurrency -проблемы)

  • Клонирование

  • Генерация хэш-кода

Чтобы назвать более важные.

Ответ 5

Java-классы (неявно/явно) extends Object по следующим причинам:

  • Java необходимо запускать на каждой платформе, которая существует (будь то мобильная, Windows, Linux и т.д.), и писать огромное количество кода для запуска на каждой платформе должно было стать миссией. Следовательно, Java создал native. Таким образом, все объекты регистрируются как собственный объект, который JVM может понять и выполнить. Не забывайте, что JVM написан на С++ (независимо от платформы, на которой он был выполнен).
  • Для сбора мусора метод finalize вызывается JVM, когда объект не нужен.

Остальные уже упоминались здесь.

Ответ 6

Программа Java по существу манипулирует

метод и класс.

Класс наследует некоторые свойства, на которых построена структура позже.

Объект - это основной класс, и все классы являются подклассом Object.

Ответ 7

Почему Object является суперклассом всех классов в Java?

Objectclass.gif Класс Object является базовым классом для всех классов в языке Java, и мы все читаем следующие предложения с первого дня нашего программирования на Java.

  1. Каждый класс является потомком класса Object.
  2. Каждый класс в Java расширяет класс Object.
  3. Класс объекта является суперклассом каждого Java-класса.
  4. Каждый класс является подклассом класса объекта

Мы все прочитали приведенные выше строки и остановились там, не пытаясь найти причину. Лишь немногие из них имеют ответ на вопрос о причине создания класса Object как суперкласса. На самом деле, нет никакой секретной причины сделать Object суперклассом. Единственная причина - наследование. Да, та же ключевая особенность ООП, теория наследования применима и здесь. Это просто, чтобы уменьшить дублирование кода.

Если вы наблюдаете методы в классе Object, он содержит основные методы, которые должен содержать каждый класс, и они являются очень основными функциями или функциями, которые должен иметь и поддерживать каждый класс (например, получение имени класса, строковое представление объекта и т.д.).

Класс объекта предоставляет основные функциональные методы, которые уже реализованы в нем. Теперь дело за программистом, хочет он или она обеспечить реализацию этих методов или нет. Если программист хочет обеспечить реализацию метода класса Object, ему/ей нужно только переопределить эти методы в своем классе. В противном случае будет выполнена реализация по умолчанию в классе Object.

Давайте посмотрим на некоторые методы класса Object:

Для строкового представления класса:

toString();

Для копирования объекта:

clone(); 

Для проверки равенства объекта:

equals();

Для поддержки методов хеширования на объекте:

hashCode();

Для поддержки сбора мусора:

finalize();

Чтобы дать классу имя объекта:

getClass();

Для поддержки синхронизации на объекте:

public final void notify()  
 public final void notifyAll()  
 public final void wait()  
 public final void wait()  
 public final void wait()

Если вы видите, все методы, упомянутые выше, являются частью базовой функции для каждого класса, и разработчики Java уже реализовали это для вас. В противном случае каждый разработчик должен написать эти методы реализации самостоятельно и в конце дня, не будет времени для написания бизнес-логики. А также каждый человек будет реализовывать код в своем собственном стиле, и не будет никакой уникальности. Таким образом, дизайнеры разделили эти основные функции и создали класс объекта и позаботились о том, чтобы все классы неявно расширяли класс объекта.

Помимо этих причин, есть много других причин, которые разработчики Java помнили, делая это. Например, для создания общих функций с Объектом в качестве параметра в методах, а затем для предоставления реализаций по умолчанию, поскольку каждый класс в Java является объектом A-A.

public final void writeObject(Object obj)

Посмотрите на функцию, написанную выше, так как ее тип параметра - Object, вы можете передать ей любой экземпляр, так как он принимает все типы объектов. Но, принимая параметр типа объекта, мы открываем и другие проблемы. В связи с этим в Java добавлены обобщения из версии 1.5 Java. Чтобы узнать больше об этой функции, перейдите по этой ссылке: https://www.quora.com/How-can-I-do-to-automatics-reset-auto. -increment-значения-в-MySQL-таблицы/ответ/Shadab-Кази-17