java源文件中最多隻能有一個
❶ java源文件中最多隻能有一個什麼類
最多有一個被public修飾的類,且被public修飾的類的類名必須與java源文件名相同
❷ 為什麼JAVA文件中只能含有一個Public類
每個編譯單元都有單一的公共介面,用public類來表現。該介面可以按要求包含眾多的支持包訪問許可權的類。如果在某個編譯單元內有一個以上的public類,編譯器就會給出錯誤信息。
一個Java源文件中可以有多個類,但只能有一個public的類,並且public的類名必須與文件名相一致。一個文件中可以只有非public類,如果只有一個非public類,此類可以跟文件名不同。
(2)java源文件中最多隻能有一個擴展閱讀:
JAVA類中主要包含屬性、方法、構造方法、塊以及內部類。
屬性用來定義對象的數據;
方法用來定義對象的行為;
構造方法可以用來創建對象;
塊能夠用來在類載入時執行操作或者在每次實例化前執行通用操作;
內部類作為類的一個成員存在,能夠訪問外部類的屬性和方法。
類是對象的模板,使用類往往都需要首先對類進行實例化,即創建對象。要創建對象必須使用new關鍵字調用構造方法(constructor)才能完成,構造方法中往往對屬性進行實例化,也可以實現其他必要的功能,如讀取屬性文件等。
構造方法的作用是用來創建對象,使用new關鍵字調用。構造方法的名字必須與類的名字相同,並且大小寫敏感,同時構造方法不能聲明返回值類型,可以使用任意一種訪問修飾符,但是不能使用其他修飾符進行修飾,如static、final、abstract等修飾符都可以修飾構造方法。
❸ 淺談為什麼一個java源文件中只能有一個public類
每個編譯單元(文件)只能有一個public類。這么做的意思是,每個編
譯單元只能有一個公開的介面,而這個介面就由其public類來表示。
我想這或是從軟體架構設計和安全性設計上得出的結論。或者說是java的設計者們從這方面的考慮。或許這真的是一個規范,但我沒有找到相關資料
不曉得到底有沒有這一說話。如果有請知道的同行給出資料來源?
實驗如下:
Test3.java源文件:
class Test1
{
int i = 1;
}
class Test2
{
int i = 2;
public static void main(String[] args)
{
System.out.println("main method");
}
}
C:/javatest>javac Test3.java
C:/javatest>java Test2
main method
註:編譯不會出錯,注意是運行的Test2 因為沒有Test3.class文件生成。如果運行Test3則報錯
找不到該類
C:/javatest>java Test3
Exception in thread "main" java.lang.NoClassDefFoundError: Test3
Caused by: java.lang.ClassNotFoundException: Test3
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: Test3. Program will exit.
這個錯誤原因很簡單:JVM中的類載入器找不到Test3.class
同時這里也說明了包含main()的類如果想運行則不一定要是public的。
《深入jvm第二版》中有這樣一句話:
java虛擬機實例通過調用某個類的main()來運行一個Java程序,而這個main()必須是public
static void 並接收一個字元串數組作為參數,任何擁有這樣一個main()的類都可以作為java程
序的起點。
並沒有說擁有main()方法的類一定要是public類。
Test7.java源文件:
class Test5
{
int i = 1;
}
public class Test6
{
int i = 2;
public static void main(String[] args)
{
System.out.println("main method");
}
}
如果運行Test7.java 報錯:
C:/javatest>javac Test7.java
Test7.java:8: 類 Test6 是公共的,應在名為 Test6.java 的文件中聲明
public class Test6
^1 錯誤
這里說明了文件名必須與public類的類名一致,(如果文件中有public類)
這里可以看出如果有多個public類,那麼文件名應該是哪個public類的呢?顯然一個java源文件
只能有一個public類。
所以總結如下:一個Java源文件中最多隻能有一個public類,當有一個public類時,源文件名必
須與之一致,否則無法編譯,如果源文件中沒有一個public類,則文件名與類中沒有一致性要求。
至於main()不是必須要放在public類中才能運行程序。
以上是通過實驗得出的結論,個人認為到這里已經可以了,如果一定要追問到底,可能要問問java
平台的設計者了。或許,人家會說:這是java的設計和jvm的內部體系結構設計造成,這是一個規
范,沒有為什麼。
❹ 為什麼java源文件中只允許一個public類存在
這個可能是一個理念,只有一個public之後,就可以找到程序的主入口,更容易讓編譯器識別出來。
❺ 一個Java源文件可以有多少個類有何限制
JAVA中一個源文件可以包含有多個類,但必須有且只能有一個共有的類即public,源文件的文件名同於public類的類名。
❻ 在Java源文件中什麼類最多隻能有一個,其他類的個數不限
A
java就是這么規定的!其他的關鍵字可以修飾內部類,一個類中可以有多個內部類。但是只能有一個public類型的類。
❼ JAVA中的public classa是什麼意思為什麼只能有一個謝謝
public class是公共類的意思,public 是訪問修飾符.為什麼只有一個,java規定,一個類文件,public 修類的class只有一個,並且類名必須和你新建的這個類文件名一樣,所以一個類文件中可以有多個類,但由public修飾的類只能有一個。
(7)java源文件中最多隻能有一個擴展閱讀:
Java具有簡單性、面向對象、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點 。Java可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序等。
編程工具
Eclipse:一個開放源代碼的、基於Java的可擴展開發平台 。
NetBeans:開放源碼的Java集成開發環境,適用於各種客戶機和Web應用。
IntelliJ IDEA:在代碼自動提示、代碼分析等方面的具有很好的功能。
MyEclipse:由Genuitec公司開發的一款商業化軟體,是應用比較廣泛的Java應用程序集成開發環境 。
EditPlus:如果正確配置Java的編譯器「Javac」以及解釋器「Java」後,可直接使用EditPlus編譯執行Java程序 。
工作原理:
由四方面組成:
(1)Java編程語言
(2)Java類文件格式
(3)Java虛擬機
(4)Java應用程序介面
參考資料:網路:java
菜鳥網:Java基礎語法
Java從入門到精通(第3版):清華大學出版社:豆瓣
❽ 一個".java"源文件中是否可以包括多個類有什麼限制
就是一個java文件里可以寫多個類,但是只有一個public修飾的類,如下
publicclassA{
}
classB{
}
classC{
}
//等等任意多個類,但是只有一個publicclass
❾ 一個java源文件中可以有多個類,但只能有一個類是public的嗎
是的。
java程序是從一個public類的main函數開始執行的,就像C程序是從main()函數開始執行一樣。只能有一個public是為了給類裝載器提供方便。 一個public只能定義在以它的類名為文件名的文件中。
❿ java源文件什麼類只能有一個
public修飾的類
一個.java文件里最多隻能有一個public類,這意思並不是必須有,也可以一整個文件里都沒有public類。所以應該說最多隻能有一個。