java中的權限修飾符的理解


首先了解概念:

在java中有四種權限修飾符:范圍從大到小分別是:public、protect、default(friendly)、private,它們之間的區別是:

 

  • public: Java語言中訪問限制最寬的修飾符,一般稱之為“公共的”。被其修飾的類、屬性以及方法不僅可以跨類訪問,而且允許跨包(package)訪問。
  • protect: 介於public 和 private 之間的一種訪問修飾符,一般稱之為“保護形”。被其修飾的類、屬性以及方法只能被類本身的方法及子類訪問,即使子類在不同的包中也可以訪問。
  • default:  這個訪問權限可能是很多人容易所忽視的,即不寫任何關鍵字。默認權限(同包權限)即:包內可訪問,包外不可訪問,不管是子類還是沒有繼承關系的類。
  • private:  只能在當前類中使用,外部不能訪問。

 

 

 

理解:什么是同包與不同包?

這很好理解啊,假如把包看成文件夾,包里面的東西就是文件,在同一個文件夾里面文件的就是同包,看代碼:

 1 package a:
 2 //function1聲明在a包中
 3 public class function1{
 4    //聲明的變量與方法;
 5 }
 6 package b;
 7 //function2聲明在b包中
 8 public claass function2{
 9      //聲明的變量與方法;
10 }

 

首先說同包,先看一個表(打勾的表示可以訪問):

 

作用域

   當前類

  子孫類

  外部類

public

      √

     √

    √

protected

      √

     √

    ×

Default(friendly)

      √

     √

    √

private

      √

     ×

    ×

 結論:在同一個包的前提下,在繼承時,子類只能繼承父類中的public、protected以及default訪問權限的成員變量或方法,並且繼承之后,這些成員變量或方法的訪問權限和之前的一樣,如父類中是public,繼承后還是public。

在不同包的情況下,看表:

 

作用域

    當前類

  子孫類

   外部類

public

      √

    √

     √

protected

      √

    √

     ×

Default(friendly)

      √

    ×

     ×

private

      √

    ×

     ×

結論:在不同包的前提下,在繼承時,子類只繼承父類中的publicprotected訪問權限的成員變量或方法作為子類自己的成員變量或方法。

 


免責聲明!

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



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