您好,我是Java的初学者。 我刚刚读到了类层次结构 -
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
此外,类对象是类层次结构的根。每个类都将Object作为超类。
如果Object类是超类,那么为什么我们在Java中单独导入每个类? 仅仅导入java.lang.Object?
是不够的答案 0 :(得分:1)
你是对的,因为Java中的每个类都是Object类的后代,但是如果你刚刚导入了Object,那就是你得到的全部内容。您不会获得ArrayList,HashSet等或API中定义的任何其他类。
答案 1 :(得分:0)
多级单根层次结构的主要原因是 - >在进行垃圾收集时,所有内容都被视为一个对象,因此它们以一种常见的方式处理。在某些集合上插入/删除或在线程上同步时也是如此。
Object只包含基本方法和字段,如wait()
,notify()
,hashCode()
。其他类虽然隐式扩展了Object,但提供了一组自己的方法和属性。所以,你必须导入它们。
答案 2 :(得分: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
的子类。为了使用Swing的java.awt
,无需从JComponent
导入任何内容。如果这样做,您始终可以使用完全限定的包名称。但如上所述,大多数人发现从这些包中导入名称很方便,这样他们就可以在任何地方写Container
而不是java.awt.Container
。