`
逆风的香1314
  • 浏览: 1388300 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

老紫竹JAVA基础培训(4)熟悉属性/变量的访问权限

阅读更多
原文:http://www.java2000.net/p11444

和前一个教程一样,我们也建了一个子目录,用来存放不同package的类

属性分为2种,
1 类实例的属性,属于某个类的实例所有,必须通过实例访问
2 类级的静态属性,属于类和所有实例所有,可通过类或者实例都可以访问

属性的权限分为
1 private 私有属性
2 [default] 默认属性,也就是啥都不写的那种,运行同一个package的访问
3 protected 被保护的属性,允许同一个package的访问,以及子类访问
4 public 公开的属性,可以被任何类访问

先看主类
lession4/Lession4.java
  1. package lession4;

  2. /**
  3.  * 老紫竹JAVA基础培训(4),熟悉属性/变量的访问权限.<br>
  4.  * 
  5.  * @author 老紫竹 JAVA世纪网(java2000.net)
  6.  * 
  7.  */
  8. public class Lession4 {
  9.   // -----------------------
  10.   // -- 实例属性,属于类的某个实例
  11.   // ------------------------

  12.   // 私有的实例属性
  13.   // 只有类自己能访问
  14.   private int num1 = 1;

  15.   // 默认的实例属性
  16.   // 自己和同一个package的其它类可以访问
  17.   int num2 = 2;

  18.   // 被保护的实例属性
  19.   // 自己和同一个pacakge的类以及子类可以访问
  20.   protected int num3 = 3;

  21.   // 公开的实例属性
  22.   // 任何其它类都可以访问
  23.   public int num4 = 4;

  24.   // -----------------------
  25.   // -- 类静态属性,属于类的所有实例
  26.   // ------------------------

  27.   // 私有的类静态属性
  28.   // 只有类自己能访问
  29.   private static int num11 = 1;

  30.   // 默认的类静态属性
  31.   // 自己和同一个package的其它类可以访问
  32.   static int num12 = 12;

  33.   // 被保护的类静态属性
  34.   // 自己和同一个pacakge的类以及子类可以访问
  35.   protected static int num13 = 13;

  36.   // 公开的类静态属性
  37.   // 任何其它类都可以访问
  38.   public static int num14 = 14;

  39.   public static void testStatic() {
  40.     // 方法的局部变量
  41.     // 只有方法内部可以访问
  42.     int num21 = 21;

  43.     // 使用属性
  44.     // 在静态方法里面可以使用静态属性
  45.     // 不能使用类实例属性
  46.     num11 = 11;
  47.     num12 = 12;
  48.     num13 = 13;
  49.     num14 = 14;
  50.   }

  51.   public void testInstance() {
  52.     // 方法的局部变量
  53.     // 只有方法内部可以访问
  54.     int num31 = 31;

  55.     // 使用属性
  56.     // 在非静态方法里面可以使用实例属性
  57.     num1 = 1;
  58.     num2 = 2;
  59.     num3 = 3;
  60.     num4 = 4;

  61.     // 在非静态方法里面可以使用静态属性
  62.     num11 = 11;
  63.     num12 = 12;
  64.     num13 = 13;
  65.     num14 = 14;
  66.   }
  67. }
lession4/TestSamePackage.java
  1. package lession4;

  2. /**
  3.  * 相同package的类。
  4.  * 
  5.  * @author 老紫竹 JAVA世纪网(java2000.net)
  6.  * 
  7.  */
  8. public class TestSamePackage {
  9.   public void test() {
  10.     Lession4 lession4 = new Lession4();
  11.     // 可以使用非private的所有类实例级属性
  12.     lession4.num2 = 2;
  13.     lession4.num3 = 3;
  14.     lession4.num4 = 4;

  15.     // 可以使用了非private的所有类级的静态属性
  16.     lession4.num12 = 12;
  17.     lession4.num13 = 13;
  18.     lession4.num14 = 14;

  19.     // 测试访问私有属性
  20.     // lession4.num1=1;
  21.   }

  22. }
lession4/otherpackage/TestSubClassOtherPackage.java
  1. package lession4.otherpackage;

  2. import lession4.Lession4;

  3. /**
  4.  * 测试其它package的子类。<br>
  5.  * 可以访问public和protected的属性。
  6.  * 
  7.  * @author 老紫竹 JAVA世纪网(java2000.net)
  8.  * 
  9.  */
  10. public class TestSubClassOtherPackage extends Lession4 {
  11.   public void test() {
  12.     // 可以使用protected和public的类实例级属性
  13.     num3 = 3;
  14.     num4 = 4;

  15.     // 可以使用protected和public的类级静态属性
  16.     num13 = 13;
  17.     num14 = 14;
  18.   }
  19. }

lession4/otherpackage/TestOtherPackage.java
  1. package lession4.otherpackage;
  2. import lession4.Lession4;
  3. /**
  4.  * 测试其它package的类。<br>
  5.  * 只能访问public属性
  6.  * 
  7.  * @author 老紫竹 JAVA世纪网(java2000.net)
  8.  * 
  9.  */
  10. public class TestOtherPackage {
  11.   public void test() {
  12.     Lession4 lession4 = new Lession4();
  13.     // 只能使用public的类实例级属性
  14.     lession4.num4 = 4;
  15.     // 只能使用public的类级静态属性
  16.     lession4.num14 = 14;
  17.   }
  18. }

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics