程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> JAVA基礎培訓(4) 熟悉屬性/變量的訪問權限

JAVA基礎培訓(4) 熟悉屬性/變量的訪問權限

編輯:關於JAVA

和前一個教程一樣,我們也建了一個子目錄,用來存放不同package的類

屬性分為2種,

1 類實例的屬性,屬於某個類的實例所有,必須通過實例訪問

2 類級的靜態屬性,屬於類和所有實例所有,可通過類或者實例都可以訪問

屬性的權限分為

1 private 私有屬性

2 [default] 默認屬性,也就是啥都不寫的那種,運行同一個package的訪問

3 protected 被保護的屬性,允許同一個package的訪問,以及子類訪問

4 public 公開的屬性,可以被任何類訪問

先看主類

lession4/Lession4.java

package lession4;
/**
* 老紫竹JAVA基礎培訓(4),熟悉屬性/變量的訪問權限.<br>
*
* @author 老紫竹 JAVA世紀網(java2000.net)
*
*/
public class Lession4 {
  // -----------------------
  // -- 實例屬性,屬於類的某個實例
  // ------------------------
  // 私有的實例屬性
  // 只有類自己能訪問
  private int num1 = 1;
  // 默認的實例屬性
  // 自己和同一個package的其它類可以訪問
  int num2 = 2;
  // 被保護的實例屬性
  // 自己和同一個pacakge的類以及子類可以訪問
  protected int num3 = 3;
  // 公開的實例屬性
  // 任何其它類都可以訪問
  public int num4 = 4;
  // -----------------------
  // -- 類靜態屬性,屬於類的所有實例
  // ------------------------
  // 私有的類靜態屬性
  // 只有類自己能訪問
  private static int num11 = 1;
  // 默認的類靜態屬性
  // 自己和同一個package的其它類可以訪問
  static int num12 = 12;
  // 被保護的類靜態屬性
  // 自己和同一個pacakge的類以及子類可以訪問
  protected static int num13 = 13;
  // 公開的類靜態屬性
  // 任何其它類都可以訪問
  public static int num14 = 14;
  public static void testStatic() {
   // 方法的局部變量
   // 只有方法內部可以訪問
   int num21 = 21;
   // 使用屬性
   // 在靜態方法裡面可以使用靜態屬性
   // 不能使用類實例屬性
   num11 = 11;
   num12 = 12;
   num13 = 13;
   num14 = 14;
  }
  public void testInstance() {
   // 方法的局部變量
   // 只有方法內部可以訪問
   int num31 = 31;
   // 使用屬性
   // 在非靜態方法裡面可以使用實例屬性
   num1 = 1;
   num2 = 2;
   num3 = 3;
   num4 = 4;
   // 在非靜態方法裡面可以使用靜態屬性
   num11 = 11;
   num12 = 12;
   num13 = 13;
   num14 = 14;
  }
}

lession4/TestSamePackage.java

package lession4;
/**
* 相同package的類。
*
* @author 老紫竹 JAVA世紀網(java2000.net)
*
*/
public class TestSamePackage {
  public void test() {
   Lession4 lession4 = new Lession4();
   // 可以使用非private的所有類實例級屬性
   lession4.num2 = 2;
   lession4.num3 = 3;
   lession4.num4 = 4;
   // 可以使用了非private的所有類級的靜態屬性
   lession4.num12 = 12;
   lession4.num13 = 13;
   lession4.num14 = 14;
   // 測試訪問私有屬性
   // lession4.num1=1;
  }
}

lession4/otherpackage/TestSubClassOtherPackage.java

package lession4.otherpackage;
import lession4.Lession4;
/**
* 測試其它package的子類。<br>
* 可以訪問public和protected的屬性。
*
* @author 老紫竹 JAVA世紀網(java2000.net)
*
*/
public class TestSubClassOtherPackage extends Lession4 {
  public void test() {
   // 可以使用protected和public的類實例級屬性
   num3 = 3;
   num4 = 4;
   // 可以使用protected和public的類級靜態屬性
   num13 = 13;
   num14 = 14;
  }
}

lession4/otherpackage/TestOtherPackage.java

package lession4.otherpackage;
import lession4.Lession4;
/**
* 測試其它package的類。<br>
* 只能訪問public屬性
*
* @author 老紫竹 JAVA世紀網(java2000.net)
*
*/
public class TestOtherPackage {
  public void test() {
   Lession4 lession4 = new Lession4();
   // 只能使用public的類實例級屬性
   lession4.num4 = 4;
   // 只能使用public的類級靜態屬性
   lession4.num14 = 14;
  }
}

測試:

1 TestSamePackage.java裡訪問私有屬性,去掉注釋即可,看看編譯的結果

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved