Java class 中public、protected 、friendly、private的區(qū)別
Javaclass中public、protected、friendly、private的區(qū)別
1. 類(class)
可見性修飾符:public在所有類中可見,在其他包中可以用import導(dǎo)入。
缺省—就是沒有修飾符,在同一個(gè)包中的類中可見,在其他包中不能用import導(dǎo)入。
修飾符: final:終態(tài)類,表示該類不能被繼承
abstract:抽象類,不能新建對(duì)象
2. 變量(variable)
Java中變量有兩種,方法變量和字段變量
方法變量只能用一個(gè)修飾符:final—表示常量,不能修改
下面是字段變量的修飾符:
可見性修飾符: public:在任何類中可見
protected:在子類中或同一個(gè)包中可見
private—只在本類中可見,子類中也不可見
缺省:在同一個(gè)包中可見,子類不在一個(gè)包中,子類中也不可見
修飾符: static:靜態(tài)變量,被類的所有實(shí)例共享
final:常量,定義后不能修改
transient:告訴編譯器,在類對(duì)象序列化的時(shí)候,此變量不需要持久保存
volatile:指出可能有多個(gè)線程修改此變量,要求編譯器優(yōu)化以保證對(duì)此變量的修改能夠被正確的處理
3. 方法(method)
可見性修飾符: public:在任何類中可見
protected:在子類中或同一個(gè)包中可見
private:只在本類中可見,子類中也不可見
缺。涸谕粋(gè)包中可見,子類不在一個(gè)包中,子類中也不可見
修飾符: static:靜態(tài)方法,并不需要?jiǎng)?chuàng)建類的實(shí)例就可以訪問靜態(tài)方法
final:常方法,所有子類不能覆蓋該方法,但可以重載
abstract:抽象方法,在抽象類中沒有實(shí)現(xiàn)的方法
native:本地方法,參見JavaNativeInterface(JNI)
synchronized:在多線程中,synchronized方法調(diào)用時(shí),其他所有方法不能調(diào)用該方法
4. 接口(interface)
可見性修飾符:public:所有類中可見
缺省:同一個(gè)包中可見
接口中的變量總是需要定義為“public static final接口名稱”,但可以不包含這些修飾符,編譯器默認(rèn)就是這樣
接口中的方法只能使用public和abstract修飾符
修飾符的訪問范圍如下:
修飾符 |
類 |
成員訪求 |
構(gòu)造方法 |
成員變量 |
局部變量 |
Abstract(抽象的) |
√ |
√ |
- |
- |
- |
Static(靜態(tài)的) |
- |
√ |
- |
√ |
- |
Public(公共的) |
√ |
√ |
√ |
- |
- |
Protected(受保護(hù)的) |
√ |
√ |
√ |
- |
- |
Private(私有的) |
- |
√ |
√ |
√ |
- |
Synchronized(同步的) |
- |
√ |
- |
- |
- |
Native(本地的) |
- |
√ |
- |
- |
- |
Transient(暫時(shí)的) |
- |
- |
- |
√ |
- |
Volatie(易失的) |
- |
- |
- |
√ |
- |
Final(不要改變的) |
√ |
√ |
- |
√ |
√ |
1. private:(妻子)只有自己能用。
2. public:(妓女)誰都可以用。
3. protected:(家里的鑰匙)只有家人可以用。
4. friendly:(公共客廳)你和別人合租房子,公共客廳就是friendly。
5. 在說明這四個(gè)關(guān)鍵字之前,我想就class之間的關(guān)系做一個(gè)簡單的定義,對(duì)于繼承自己的class,baseclass可以認(rèn)為他們都是自己的子女,而對(duì)于和自己一個(gè)目錄下的classes,認(rèn)為都是自己的朋友。