Импорт против иерархии классов в Java

1

Привет Я новичок в Java. Я просто прочитал о классе Hierarchy-

java.lang.Object java.awt.Component java.awt.Container javax.swing.JComponent

Кроме того, объект класса является корнем иерархии классов. Каждый класс имеет объект как суперкласс.

Если класс Object является суперклассом, то почему мы импортируем каждый класс отдельно в Java? Не было бы достаточно импортировать только java.lang.Object?

  • 0
    нет, потому что это позволит вам использовать только объект, а не вещи, которые расширяют объект
  • 0
    Вам не нужно импортировать каждый класс отдельно - все в пакете java.lang доступно без его импорта.
Показать ещё 2 комментария
Теги:

3 ответа

1

Вы правы в том, что каждый класс в Java является потомком класса Object, но если вы только что импортировали Object, это все, что вы получите. Вы не получите ArrayList, HashSet и т.д. Или любой другой класс, определенный в API.

0

Основная причина многоуровневой иерархии с одним корнем → при выполнении сбора мусора, все рассматривается как объект, поэтому они обрабатываются обычным способом. То же самое применяется при вставке/удалении в некоторых коллекциях или синхронизации по потокам. Объект имеет только основные методы и поля, такие как wait(), notify(), hashCode(). Другие классы, хотя они неявно расширяют Object, предоставляют собственный набор методов и свойств. Таким образом, вы должны импортировать их.

0

В Java объявления import влияют только на способ разрешения имен. Они не влияют на классы, которые вы можете использовать, и на них не влияет наследство.

Большинство людей считают удобным использовать простые имена из библиотеки классов. Для этого вам необходимо добавить import объявления. Исключение составляют имена из пакета java.lang, который неявно импортируется в каждую программу Java.

Например, если вы хотите написать свой собственный компонент Swing, вы можете сделать это, не используя импорт:

class MyComponent extends javax.swing.JComponent { ... }

Использование полностью квалифицированных имен таким образом является громоздким, поэтому большинство людей предпочитают импорт:

import javax.swing.JComponent;

class MyComponent extends JComponent { ... }

Это правда, что JComponent является подклассом java.awt.Container и java.awt.Component. Не нужно импортировать ничего из java.awt, чтобы использовать Swing JComponent. Если вы это сделаете, вы всегда можете использовать полное имя пакета. Но, как и выше, большинство людей считают удобным импортировать имена из этих пакетов, чтобы они могли просто писать Container вместо java.awt.Container везде.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню