Java 包和訪問(wèn)權(quán)限

一開(kāi)始學(xué)Java,就用的eclipse。對(duì)包的印象就是右鍵新建而已。至于導(dǎo)入包,等報(bào)錯(cuò)了再導(dǎo)。
被IDE奴役的傻孩子=。=
現(xiàn)在就清晰地梳理一遍吧~
本文基于Mars老師的Java4Android視頻。

包的作用

軟件包為Java類(lèi)提供了命名空間。根據(jù)包名,會(huì)生成相應(yīng)的文件夾,將類(lèi)存儲(chǔ)在里面。
打包時(shí),使用package指令。如下所示:

package org.sia;
class Test {
    public static void main(String args []) {
        System.out.println("Hello,package!");
    }
}

一個(gè)類(lèi)的全名,應(yīng)該是“包名” + “.” + “類(lèi)名”。
比如上面的代碼,類(lèi)名應(yīng)該是 org.sia.Test

包名的命名規(guī)范

  • 包名所有字母小寫(xiě)
  • 包名一般情況下,是你的域名倒過(guò)來(lái)寫(xiě),再加上包的用途。比如假裝我有一個(gè)域名=。=,是sia.org,有一個(gè)包下面放的是用戶相關(guān)的類(lèi),包名就應(yīng)該是package org.sia.user。包名中每一個(gè) “.” 都生成一層新的文件夾。

Java當(dāng)中的訪問(wèn)權(quán)限

分為四大類(lèi):
1、 public:公共權(quán)限

  • 既可以修飾類(lèi),又可以修飾成員變量和成員函數(shù)。public表示沒(méi)有限制,你行你上,沒(méi)人攔著。在同一個(gè)或不同的包中,都可以訪問(wèn)。
  • public類(lèi)中的成員變量和函數(shù),只有被public修飾時(shí),才可以被外界包訪問(wèn)。
  • 如果一個(gè)類(lèi)被聲明為public,那么類(lèi)名必須和文件名一樣。(被default修飾時(shí),就可以不同,不過(guò)不推薦這樣做)
  • 如果在別的包里,生成public修飾的類(lèi)中對(duì)象的引用,類(lèi)名必須用全名。即:
package org.sia;
public class Person {
    public String name; 
    public void introduce() {
        System.out.println("name");
    }
}

package org.coding;
class Test {
    public static void main(String args []) {
    //聲明一個(gè)Person的引用
        org.sia.Person p = new org.sia.Person();
        p.name = "sia";
    }
}

  • 但是這樣非常麻煩,所以可以先導(dǎo)入要用的類(lèi)或者包。
import org.sia.Test;  //或者import org.sia.*;
class Test {
    public static void main(String args []) {
        Person p = new Person();
        p.name = "sia";
    }
}

2、private:私有權(quán)限

  • 能夠修飾變量和函數(shù),表示變量和函數(shù)只能在當(dāng)前類(lèi)中使用。
  • 只能修飾內(nèi)部類(lèi),不能修飾其他的類(lèi)。

3、default:包級(jí)別訪問(wèn)權(quán)限

  • 變量、函數(shù)和類(lèi)前面不加權(quán)限修飾符,就是default權(quán)限。
  • default權(quán)限,表示在同一個(gè)包中可以自由訪問(wèn)。

4、protected:受保護(hù)權(quán)限

  • 這個(gè)權(quán)限主要和繼承有關(guān)系。
  • protected首先擁有和default權(quán)限一樣的功能,但是該權(quán)限只能修飾成員變量和成員函數(shù)。
  • protected還允許跨包繼承。注意,它和public的區(qū)別在于,跨包的情況下,也只有子類(lèi)能使用這些成員,被public修飾的,沒(méi)有繼承關(guān)系也能用。

5、繼承中的權(quán)限問(wèn)題

  • 如果父類(lèi)是public,子類(lèi)和父類(lèi)不在一個(gè)包中,子類(lèi)可以繼承到父類(lèi)中default權(quán)限的成員變量和成員函數(shù),但是由于權(quán)限不夠,無(wú)法使用。(之所以說(shuō)子類(lèi)可以繼承,是因?yàn)榫幾g報(bào)錯(cuò)不是找不到該成員,而是權(quán)限問(wèn)題無(wú)法訪問(wèn))。
  • 如果父類(lèi)是public,父類(lèi)中的成員變量和成員函數(shù)是private,則只能在父類(lèi)中使用它們。

總結(jié):
public > protected > default > private ;
修飾類(lèi),除了內(nèi)部類(lèi)可以用private,只能用public,或者不寫(xiě)(就是default);
權(quán)限,應(yīng)該盡可能的小,這是面向?qū)ο蠓庋b性的體現(xiàn)。

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

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

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類(lèi)相關(guān)的語(yǔ)法,內(nèi)部類(lèi)的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,765評(píng)論 18 399
  • 包 1.什么是java當(dāng)中的軟件包?2.為什么要使用軟件包?3.如何給一個(gè)類(lèi)打包?例如:開(kāi)發(fā)團(tuán)隊(duì),開(kāi)發(fā)一個(gè)系統(tǒng),分...
    CCCA閱讀 935評(píng)論 -1 0
  • Win7下如何打開(kāi)DOS控制臺(tái)? a:開(kāi)始--所有程序--附件--命令提示符 b:開(kāi)始--搜索程序和文件--cmd...
    逍遙嘆6閱讀 1,614評(píng)論 4 12
  • 1、.java源文件: 一個(gè)以”.java“為后綴的源文件:只能有一個(gè)與文件名相同的類(lèi),可以包含其他類(lèi)。 2、類(lèi)方...
    Hughman閱讀 1,518評(píng)論 1 9
  • 引子 隨著各大門(mén)派的崛起,江湖版圖格局已定。 當(dāng)此之時(shí),十大門(mén)派分列東南西北中。鬼谷、流沙雄踞北方高原,唐門(mén)、蜀山...
    三水林楓閱讀 1,580評(píng)論 61 42