Java受保護的訪問修飾符protected


聲明:我不去上來給大家那一張被扯來扯去的√,×表,什么表想必大家心里清楚

下面進入正題:

protected 的主要着眼點在於兩點:

1.子類繼承
2.是否同包

心里記着上面的那兩點,那么protected 需要從以下兩個方面或者說結論來分析說明:

1.子類與基類在同一包中:被聲明為 protected 的變量、方法和構造器能被同一個包中的任何其他類訪問;

2.子類與基類不在同一包中:那么在子類中,子類實例可以訪問其從基類繼承而來的 protected 方法,而不能訪問基類實例的protected方法。

子類與基類在同一包中想必大家很好理解,下面闡述子類與基類不在同一包中這種情形:

//代碼1:包A中有一個動物類 
package testa; 
public class Animal { 
    protected void crowl(String c){ 
        System.out.println(c); 
    } 
} 
//代碼2:包B中有兩個類——貓類和鼠類 
package testb; 
import testa.Animal; 
class Cat extends Animal{ 

} 
class Rat extends Animal{ 
    public void crowl(){ 
            crowl("zhi zhi"); //沒有問題,繼承了Animal中的protected方法: crowl(String) 
            Cat cat=new Cat(); 
            cat.crowl("miao miao"); //wrong, The method crowl(String) from the type Animal is not visible 
    } 
} 

總結:A父與B子不在同一包下,當B extends A的時候,在子類B的作用范圍內,只能調用本子類B定義的對象的protected方法(該方法從父類A中繼承而來),而不能訪問基類實例的protected方法。

 

 


 

其他注意事項:

1.protected 可以修飾數據成員,構造方法,方法成員

2.不能修飾類(內部類除外)

3.接口及接口的成員變量和成員方法不能聲明為 protected


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM