JFrame
延伸到和有区别javax.swing.JFrame
吗?
例子:
public class Authenticator extends JFrame {
和...
public class Authenticator extends javax.swing.JFrame {
除非您调用另一个类JFrame
并导入它而不是javax.swing.JFrame
.
也就是说,正如 Andrew Thompson 所说,您不应该扩展JFrame
,而应该使用实例。
如果你导入javax.swing.JFrame; 然后你使用
public class Authenticator extends JFrame {
如果没有,那么使用
public class Authenticator extends jvax.swing.JFrame {
但是第二种方法主要用于当你在不同的包中有同名的类时,以区分类。
例如
[-]mypackage
|----[-]pakage1
|---TestClass.java
|----[-]pakage2
|---TestClass.java
这是我们有一个名为 mypackage 的包和两个子包 pakage1 和 pakage2 的情况
现在如果我们只导入它会给出这个
import mypackage.pakage1.TestClass;
import mypackage.pakage2.TestClass;
class Testw
{
public static void main(String []args)
{
System.out.println("Swah!");
}
}
它会给出以下错误
C:\Program Files\Java\jdk1.6.0_38\bin>javac Testw.java
Testw.java:2: mypackage.pakage1.TestClass is already defined in a single-type import
import mypackage.pakage2.TestClass;
^
1 error
那你干什么?
在这种情况下,您使用第二种方法,也称为完全限定名称,现在您导入一个包并为其他包使用完全限定名称。
import mypackage.pakage1.TestClass;
class Testw
{
public static void main(String []args)
{
TestClass testclass1 = new TestClass();
mypackage.pakage2.TestClass testclass2 = new mypackage.pakage2.TestClass();
System.out.println("Swah!");
}
}
所以整个事情的总结是当他们的名字冲突时使用完全限定的名字,我们也可以在他们没有名字冲突的时候使用这个方法,他们不会对程序产生任何影响
这取决于你的进口。如果您导入 javax.swing.JFrame,则不会。
无论如何你都必须导入JFrame
,它javax.swing
很可能来自包,如果包含多个类,你只需要编写整个包路径JFrame
,这样编译器就会知道你想使用哪一个,所以如果只有一个JFrame
类,那么导入就足够了,你不必再次指定它