java文件名為什么要與public聲明的類名同名?

以下觀點(diǎn)是自己對(duì)同名原因的理解,希望行家不吝賜教!

? 在討論這個(gè)問(wèn)題之前,我想請(qǐng)大家思考一個(gè)問(wèn)題。將聲明的一個(gè)類用public修飾的意義在哪里?我相信很多朋友會(huì)想到訪問(wèn)、調(diào)用權(quán)限聲明,public、private等是對(duì)其他類能否調(diào)用該類的明確界定,其作用是不言而喻的。那么這些與同名問(wèn)題有什么關(guān)聯(lián)呢?

? ?未限定聲明的類可在同一包中被調(diào)用,java程序編譯時(shí)會(huì)將源文件生成以各自類命名的.class文件,因此在同一包中不能定義相同名稱的類,否則會(huì)引發(fā)沖突,系統(tǒng)會(huì)報(bào)錯(cuò)。而聲明為public的類可以被包外的類引用,只需要import 包名 文件名.java,就可以使用該類。這里我要指出:編譯器在執(zhí)行這條語(yǔ)句時(shí)會(huì)根據(jù)路徑反向查找,而此時(shí)的文件名能幫助編譯器快速定位所編譯類的位置。想要快速實(shí)現(xiàn)這一過(guò)程,就需要遵循規(guī)則,而將聲明的類與文件名同名,能很好地解決這一問(wèn)題。同時(shí),因?yàn)槲聪薅暶鞯念惒淮嬖诎庹{(diào)用,所以其命名也能很隨意,因?yàn)橄到y(tǒng)不需要花功夫查找它,只是在包內(nèi)使用時(shí)進(jìn)行遍歷。

? 其實(shí),我們可以把同名理解為規(guī)則,編譯單元將public修飾符看做是一個(gè)java的公開(kāi)接口,在對(duì)一個(gè)java程序編譯前,會(huì)先檢驗(yàn)該文件是否符合規(guī)范(規(guī)則是我只能接收一個(gè)或沒(méi)有public修飾的類,其他的都不準(zhǔn)通過(guò)!!!)當(dāng)然,若編譯器檢查其符合規(guī)范且有public聲明,為了提高效率,讓編程員把該文件命名為與pubic 類同名的文件再好不過(guò)。


參考:

一個(gè)java源文件為什么只能有一個(gè)public類呢?當(dāng)這個(gè)類被修飾public的話,為什么源文件名必須要與類名相同呢?

Java中類名與文件名的關(guān)系


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,765評(píng)論 18 399
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,923評(píng)論 18 139
  • 面向?qū)ο笾饕槍?duì)面向過(guò)程。 面向過(guò)程的基本單元是函數(shù)。 什么是對(duì)象:EVERYTHING IS OBJECT(萬(wàn)物...
    sinpi閱讀 1,088評(píng)論 0 4
  • 在動(dòng)作類RPG游戲中,為了體現(xiàn)角色的技能和增加動(dòng)作打擊感,我們常常會(huì)給相機(jī)添加抖動(dòng)效果來(lái)配合特效做一些技能效果。我...
    Unity云中客閱讀 3,650評(píng)論 0 6
  • 七夕(2).......等候牛郎和織女(309) ■六月飛雪 一條風(fēng)雨飄泊的人生路 飄過(guò) 多少年 牛郎和...
    朝花夕拾杯中酒123閱讀 274評(píng)論 0 14