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

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

属性分为2种,

1 类实例的属性,属于某个类的实例所有,必须通过实例访问

2 类级的静态属性,属于类和所有实例所有,可通过类或者实例都可以访问

属性的权限分为

1 private 私有属性

2 [default] 默认属性,也就是啥都不写的那种,运行同一个package的访问

3 protected 被保护的属性,允许同一个package的访问,以及子类访问

4 public 公开的属性,可以被任何类访问

先看主类

lession4/Lession4.java

package lession4;/*** 老紫竹JAVA基础培训(4),熟悉属性/变量的访问权限.** @**/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的类。** @**/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的子类。* 可以访问public和protected的属性。** @**/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的类。* 只能访问public属性** @**/public class TestOtherPackage {  public void test() {   Lession4 lession4 = new Lession4();   // 只能使用public的类实例级属性   lession4.num4 = 4;   // 只能使用public的类级静态属性   lession4.num14 = 14;  }}

测试:

1 TestSamePackage.java里访问私有属性,去掉注释即可,看看编译的结果

没有一种不通过蔑视、忍受和奋斗就可以征服的命运。

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

相关文章:

你感兴趣的文章:

标签云: