Привет Я новичок в Java. Я просто прочитал о классе Hierarchy-
java.lang.Object java.awt.Component java.awt.Container javax.swing.JComponent
Кроме того, объект класса является корнем иерархии классов. Каждый класс имеет объект как суперкласс.
Если класс Object является суперклассом, то почему мы импортируем каждый класс отдельно в Java? Не было бы достаточно импортировать только java.lang.Object?
Вы правы в том, что каждый класс в Java является потомком класса Object, но если вы только что импортировали Object, это все, что вы получите. Вы не получите ArrayList, HashSet и т.д. Или любой другой класс, определенный в API.
Основная причина многоуровневой иерархии с одним корнем → при выполнении сбора мусора, все рассматривается как объект, поэтому они обрабатываются обычным способом. То же самое применяется при вставке/удалении в некоторых коллекциях или синхронизации по потокам. Объект имеет только основные методы и поля, такие как wait()
, notify()
, hashCode()
. Другие классы, хотя они неявно расширяют Object, предоставляют собственный набор методов и свойств. Таким образом, вы должны импортировать их.
В 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
везде.