天天看點

java 修飾符 詳解_Java 四種通路修飾符詳解

通路修飾符權限

PS 紅色是不可通路

private

在目前類中 main方法之外可以借助名稱使用 在main方法中需要執行個體化對象使用

我們想要在别的類中調用私有成員 就需要建立一個公有的方法 在公有方法中使用這個私有成員 也就是面向對象中的封裝。

在繼承中,私有成員無法被繼承,子類無法使用父類的私有成員。

java 修飾符 詳解_Java 四種通路修飾符詳解

public:

在目前類中 main方法之外可以借助名稱使用 在main方法中需要執行個體化對象使用

在其他任何地方 都可以執行個體化對象進行通路

在繼承中,被public所修飾的成員能被所有的子類繼承下來并使用。

java 修飾符 詳解_Java 四種通路修飾符詳解

protected:

同包情況下

在目前類中 main方法之外可以借助名稱使用 在main方法中需要執行個體化對象使用

在同包的其他類中,可以用執行個體化對象通路使用

在同包的子類中,被protected修飾的成員可以被繼承通路,也就是可以執行個體化父類或是子類的對象使用

在同包其他類中,且不是子類,要使用子類的類中,同一個包中,可以使用執行個體化父類或是子類的對象使用

不同包情況下

在不同包的其他類中,不可以用執行個體化對象通路使用

在不同包的其他子類中,被protected修飾的成員可以被繼承通路,但是隻能通過執行個體化子類對象使用。

在不同包的其他類中,且不是子類,要使用子類的類中,是不能通過例化子類對象調用父類的受保護成員的 因為這個時候相當于父類中的受保護成員跨包了。如果想要通過子類對象調用父類的受保護的成員,需要重新覆寫父類的這個成員。

在實際的開發中也許很少用到protected來作通路控制,但是java的這個修飾符設計很巧妙,思想很高。同包中可以看做是public,異包中可以看做private

java 修飾符 詳解_Java 四種通路修飾符詳解

package/friendly/default

同一包中的所有類都能通路。所修飾的成員隻能被該類所在同一個包中的子類所繼承下來。

别的包中的子類是沒法通路的。

java 修飾符 詳解_Java 四種通路修飾符詳解

總結

java 修飾符 詳解_Java 四種通路修飾符詳解