1. 程式人生 > >Java的Protected修飾符

Java的Protected修飾符

        Protected欄位是為了繼承而設計的.首先,一般的欄位由於封裝性,一般設定成private,但如果有新類繼承當前欄位所屬的類,就要修改當前欄位的訪問控制權限. 

        如果子類和父類在同一個package中,只需要將private去掉,許可權變為包訪問許可權即可;但是如果子類和父類不在同一個包內,為了能夠讓繼承實現,必須把private改成public.對於類庫和客戶端程式而言,他們大多不在一個包內,為了能夠讓子類訪問而改成public,這樣使得其他不相關的類也能訪問該成員(或方法),增加了風險. 

        所以設計了protected欄位,他介於public和包訪問許可權之間.在跨包訪問的過程中做了一個條件限定:包許可權 + 只能讓跨包的子類訪問 (public許可權 - 非子類跨包訪問) 

        非常要注意的是,protected許可權中的子類可訪問指的是:在子類中可以通過子類物件直接訪問繼承來的父類的protected物件,但是不能通過父類物件訪問該protected物件。同時, 

        在第三個類(不與子類、父類在同一個包)中,同過子類物件訪問父類的protected成員或者方法,不行(只能在子類中) 

Eg: 

Package nima 

Public class TTG{ 

        Private int meme; 

        Private int gg; 

        Public static void main(String[] args){ 

                Element Ele = new Element(1,2); 

                Ele.clone(); 

        } 

}  

Class Element{ 

        Int id; 

        Int value; 

        Public Element(int id, int value){ 

                This.id = id; 

                This.value = value; 

        } 

可以發現,子類Element從父類Object繼承來的protected方法,只能在Element中訪問,而在第三方類TTG中,不能通過其物件訪問