1.權限解析
Java有四種訪問權限, 其中三種有訪問權限修飾符,分別為private,public和protected,還有一種不帶任何修飾符。
private: Java語言中對訪問權限限制的最窄的修飾符,一般稱之為“私有的”。被其修飾的類、屬性以及方法只能被該類的對象訪問,其子類不能訪問,更不能允許跨包訪問。
- default:即不加任何訪問修飾符,通常稱為“默認訪問模式“。該模式下,只允許在同一個包中進行訪問。
- protect: 介於public 和 private 之間的一種訪問修飾符,一般稱之為“保護形”。被其修飾的類、屬性以及方法只能被類本身的方法及子類訪問,即使子類在不同的包中也可以訪問。
- public: Java語言中訪問限制最寬的修飾符,一般稱之為“公共的”。被其修飾的類、屬性以及方法不僅可以跨類訪問,而且允許跨包(package)訪問。
下面用表格的形式來展示四種訪問權限之間的異同點,這樣會更加形象。表格如下所示:
同一個類 |
同一個包 |
不同包的子類 |
不同包的非子類 |
|
Private |
√ |
|||
Default |
√ |
√ |
||
Protected |
√ |
√ |
√ |
|
Public |
√ |
√ |
√ |
√ |
2.代碼應用
創建一個Spoon類:

package com.samsung.wx; public class Spoon { private static void printArrayPrivate(String... args){ for(String obj: args){ System.out.print(obj.toString()); } System.out.println(); } public static void printArrayPublic(String... args){ for(String obj: args){ System.out.print(obj.toString()); } System.out.println(); } protected static void printArrayProtect(String... args){ for(String obj: args){ System.out.print(obj.toString()); } System.out.println(); } static void printArrayDefault(String... args){ for(String obj: args){ System.out.print(obj.toString()); } System.out.println(); } }
在另一個包中調用Spoon的方法,只有public方法可以被調用:

package com.samsung.wx2; import com.samsung.wx.Spoon; public class Test { public static void main(String[] args) { Spoon.printArrayPublic("public"); } }
創建一個類SubSpoon繼承Spoon(和Spoon在不同包中), 可以在SubSpoon中調用Spoon的protect方法:

package com.samsung.wx2; import com.samsung.wx.Spoon; public class SubSpoon extends Spoon{ public SubSpoon() { Spoon.printArrayProtect("protect"); } }