Java面向?qū)ο缶幊填?lèi)的訪(fǎng)問(wèn)權(quán)限

小樊
82
2024-10-31 10:18:55

在Java中,類(lèi)的訪(fǎng)問(wèn)權(quán)限主要有四種:public、protected、默認(rèn)(無(wú)修飾符)和private。這些訪(fǎng)問(wèn)權(quán)限決定了類(lèi)、變量、方法和構(gòu)造函數(shù)的可見(jiàn)性范圍。

  1. public:public訪(fǎng)問(wèn)權(quán)限是最寬松的,表示該類(lèi)、方法或變量可以從任何地方訪(fǎng)問(wèn)。當(dāng)一個(gè)類(lèi)被聲明為public時(shí),其他任何類(lèi)都可以直接實(shí)例化這個(gè)類(lèi)或者訪(fǎng)問(wèn)它的public方法和變量。

  2. protected:protected訪(fǎng)問(wèn)權(quán)限介于public和默認(rèn)之間。表示該類(lèi)、方法或變量可以被同一個(gè)包內(nèi)的其他類(lèi)訪(fǎng)問(wèn),以及所有子類(lèi)(無(wú)論是否在同一個(gè)包內(nèi))訪(fǎng)問(wèn)。如果一個(gè)類(lèi)是protected的,那么它可以被同一個(gè)包內(nèi)的其他類(lèi)以及所有子類(lèi)訪(fǎng)問(wèn)。

  3. 默認(rèn)(無(wú)修飾符):當(dāng)類(lèi)、方法或變量沒(méi)有指定訪(fǎng)問(wèn)權(quán)限時(shí),它們的訪(fǎng)問(wèn)權(quán)限默認(rèn)為默認(rèn)。這意味著它們只能在同一個(gè)包內(nèi)的其他類(lèi)訪(fǎng)問(wèn)。這種訪(fǎng)問(wèn)權(quán)限適用于只在同一個(gè)包內(nèi)使用的類(lèi)、方法和變量。

  4. private:private訪(fǎng)問(wèn)權(quán)限是最嚴(yán)格的,表示該類(lèi)、方法或變量只能在聲明它的類(lèi)內(nèi)部訪(fǎng)問(wèn)。私有成員不能被外部類(lèi)訪(fǎng)問(wèn),也不能被子類(lèi)繼承。通常,對(duì)于不希望被外部訪(fǎng)問(wèn)的成員(如實(shí)現(xiàn)細(xì)節(jié)),我們會(huì)使用private修飾符。

以下是一個(gè)簡(jiǎn)單的示例,展示了不同訪(fǎng)問(wèn)權(quán)限的類(lèi)定義:

// public類(lèi)
public class PublicClass {
    public int publicVar;
    protected int protectedVar;
    int defaultVar;
    private String privateVar = "default";
}

// 默認(rèn)訪(fǎng)問(wèn)權(quán)限類(lèi)
class DefaultClass {
    int defaultVar;
}

// 子類(lèi)
class SubClass extends PublicClass {
    void accessMembers() {
        // 可以訪(fǎng)問(wèn)父類(lèi)的public和protected成員
        publicVar = 1;
        protectedVar = 2;
        // 無(wú)法訪(fǎng)問(wèn)父類(lèi)的defaultVar和privateVar
    }
}

0