[英]Java: two top level class in same file
例如我有A.java
。 在A.java
我有:
public class A {
// normal
}
class B { // cannot declare: public class B
}
並與A.java
在同一包中。 我創建C.java
並聲明:
public class C {
public void methodC() {
A a = new A();
B b = new B(); // no error -> B is a public class
}
}
如果我在文件C.java
創建新的類B。 C將引用文件C.java
類B,而不是A.java
。
class B {
}
public class C {
public void methodC() {
B b = new B(); //this B refer to C.java rather than A.java
}
}
因此,我在這里看到了一些問題:在同一個程序包中,將有兩個相同的類。 因此,當我創建D.java
,如何知道將D.java
哪個類B?
還有一個問題,當我在A類和C類之外聲明B類的真正類型時,這一點使我感到非常沮喪。
謝謝 :)
當您已經在A.java
完成此A.java
:
public class A {
// normal
}
class B { // cannot declare: public class B
}
您將無法在同一包中的同一C.java
中定義class B
,因為它已經存在於同一包中
class B { //You won't be able to do this as same class in package exists
}
public class C {
public void methodC() {
B b = new B(); //this B refer to C.java rather than A.java
}
}
我嘗試過的內容如下,它向我展示了這一點:
我猜您在最后一個代碼段中打了錯字(宣布B為公開)。 但是重要的是,您不能在包中定義兩個具有相同名稱的類。 它將引發編譯器錯誤。 我已經使用IDE進行了嘗試,並且該項目表明存在歧義,因為已經定義了B類。
您將獲得重復的類定義。 A.java將被編譯為A.class和B.class。 編譯C.java會導致錯誤或覆蓋B.class。
B類不是公共的,它是本地程序包,因此只能由同一程序包中的類使用。
為什么不創建單獨的類BForA和BForC? 如果要重用某些內容,請創建一個共享的AbstractB父類。
在類A中定義的類B 不是公共的,它是包私有的 -僅在定義它的包內部可見。
當您同時在類D中定義類B時,您將得到一個錯誤:類型B已被定義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.