91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java類成員如何訪問權限控制

發布時間:2020-08-01 14:04:20 來源:億速云 閱讀:153 作者:小豬 欄目:編程語言

這篇文章主要講解了Java類成員如何訪問權限控制,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

一 前言

這篇文章是很基礎的一文,沒多大深度,對于開發人員必然是熟練于心。本篇文章的主題是為什么java要設置類成員訪問級別?其原因也很簡單,就是為了面向對象的封裝特性;將類成員使用不同的訪問級別控制,在數據封裝后,其他的類成員想要訪問當前類成員,就必須要有足夠的權限才能訪問;這樣做的目的就是我可以隨意修改不想讓其他類成員沒有權限訪問的數據,只要約定好相關的協議,不影響其他類成員訪問即可;

二 權限修飾詞介紹

  • public 意指公有的意思,其修飾的成員權限最低,表示任何成員都可以訪問;注意點是一個java源文件中只能有一個類被聲明為public;
  • defaut 默認級別,成員沒有修飾符號,在同一個包內能被其他成員訪問;
  • protected 受保護的意思;表示子類能夠繼承父類的方法;在同一個包內被其修飾的成員,其子類能夠訪問;注意點是不可以修飾外部類;
  • private 私有的意思;權限最高,表示只允許類內部成員可以訪問;注意點是不可以修飾外部類;
修飾符同一個類中同一個包中的其他類不同包的子類中不同包的非子類中
publictruetruetruetrue
protectedtruetruetrue
defaulttruetrue
privatetrue

三 具體實施

3.1 public

在com.youku1327.base.authority2 包中創建了一個星球類,有個成員是shine表示光線,對應的getShine方法使用public修改,方法意思是獲得光線;

package com.youku1327.base.authority2;
/**
 * @Author lsc
 * <p> 星球類 </p>
 */
public class Planet {
  private String shine = "好耀眼";
  public String getShine(){
    return shine;
  }
}

在 com.youku1327.base.authority1 包中創建類ZSZXZ, 使用import com.youku1327.base.authority2.Planet;導入 Planet星球類;在main方法中創建星球類,調用獲得光線的方法,得到輸出結果是 好耀眼;驗證了public權限最低,不同包之間得非子類就可以訪問;

package com.youku1327.base.authority1;
import com.youku1327.base.authority2.Planet;
/**
 * @Author lsc
 * <p> </p>
 */
public class ZSZXZ {
  public static void main(String[] args) {
    // 創建星球實體
    Planet planet = new Planet();
    // 訪問公有成員
    String shine = planet.getShine();
    // 好耀眼
    System.out.println(shine);
  }
}

將 星球類的getShine方法修飾符號改為 protected;

package com.youku1327.base.authority2;
/**
 * @Author lsc
 * <p> 星球類 </p>
 */
public class Planet {
  private String shine = "好耀眼";
  protected String getShine(){
    return shine;
  }
}

在com.youku1327.base.authority1中創建Earth類繼承星球類Planet(初學者只要理解extends關鍵字表示繼承的意思),繼承的方法是 getShine方法,然后在主類中創建地球實例,調用getShine方法,實際上是調用 Planet的 getShine 方法(super.getShine(),super意指高級,表示父類 );驗證了不同包的子類可以調用父類被protected修飾的成員;

package com.youku1327.base.authority1;

import com.youku1327.base.authority2.Planet;

/**
 * @Author lsc
 * <p> 地球類</p>
 */
public class Earth extends Planet {
  @Override
  protected String getShine() {
  	// 調用了父類的getShine方法
    return super.getShine();
  }
	// 執行前注釋掉ZSZXZ中的main方法
  public static void main(String[] args) {
    // 創建地球
    Earth earth = new Earth();
    // 好耀眼
    System.out.println(earth.getShine());
  }
}

在回去看看原來的ZSZXZ類的getShine發現報錯了;驗證了不同包的非子類,使用protected修飾無法訪問;

Java類成員如何訪問權限控制

3.3 default

將 Planet 星球類 的 getShine 方法的修飾符去掉,代碼如下

package com.youku1327.base.authority2;
/**
 * @Author lsc
 * <p> 星球類 </p>
 */
public class Planet {

  private String shine = "好耀眼";

  String getShine(){
    return shine;
  }
}

隨著發現 之前的地球類報錯了,我們把整個地球類注釋掉;驗證了default修飾的成員不能夸包訪問;

Java類成員如何訪問權限控制

我們在 Planet 的同級包下創建Moon類,調用 Planet的getShine方法,成功執行;驗證了default修飾的成員能在同一個包中被訪問;

package com.youku1327.base.authority2;

/**
 * @Author lsc
 * <p> </p>
 */
public class Moon {
  public static void main(String[] args) {
    // 創建星球實體
    Planet planet = new Planet();
    // 訪問公有成員
    String shine = planet.getShine();
    // 好耀眼
    System.out.println(shine);
  }
}

3.4 private

將 Planet 星球類 的 getShine 方法的修飾符改為private;

package com.youku1327.base.authority2;

/**
 * @Author lsc
 * <p> 星球類 </p>
 */
public class Planet {
  private String shine = "好耀眼";
  private String getShine(){
    return shine;
  }
}

發現 之前的 的Moon類主方法中的getShine方法報錯了,驗證了private在同包不同類中不可以被訪問;getShine() 中可以使用 shine 字段,驗證了同一個類中可以使用private修飾的成員;

 private String shine = "好耀眼";
  private String getShine(){
    return shine;
  }
}

發現 之前的 的Moon類主方法中的getShine方法報錯了,驗證了private在同包不同類中不可以被訪問;getShine() 中可以使用 shine 字段,驗證了同一個類中可以使用private修飾的成員;

Java類成員如何訪問權限控制

看完上述內容,是不是對Java類成員如何訪問權限控制有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

伊金霍洛旗| 盈江县| 定兴县| 当雄县| 依安县| 苍溪县| 孟津县| 闵行区| 积石山| 黄陵县| 封开县| 鄂托克前旗| 平利县| 石楼县| 蒙山县| 家居| 汪清县| 麟游县| 康平县| 江北区| 凌海市| 安福县| 乐山市| 沾益县| 边坝县| 贡觉县| 永德县| 纳雍县| 甘泉县| 开阳县| 巩义市| 林西县| 昌吉市| 呈贡县| 民县| 东宁县| 左权县| 黔西| 得荣县| 霍林郭勒市| 新宾|