原文:
http://www.java2000.net/p11444
和前一个教程一样,我们也建了一个子目录,用来存放不同package的类
属性分为2种,
1 类实例的属性,属于某个类的实例所有,必须通过实例访问
2 类级的静态属性,属于类和所有实例所有,可通过类或者实例都可以访问
属性的权限分为
1 private 私有属性
2 [default] 默认属性,也就是啥都不写的那种,运行同一个package的访问
3 protected 被保护的属性,允许同一个package的访问,以及子类访问
4 public 公开的属性,可以被任何类访问
先看主类
lession4/Lession4.java
lession4/TestSamePackage.java
lession4/otherpackage/TestSubClassOtherPackage.java
lession4/otherpackage/TestOtherPackage.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;
- }
- }
- 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;
- }
- }
- 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; }}