较之c++ 中 public,proctected, private 三种访问控制, java多了默认访问控制。
java中四种访问控制权限 简单描述为一下四句:
1)private 仅本类可见 (同c++)
2)默认 对本包可见/包内访问 (c++没有)
3)protected 对本包和所有子类可见 (c++中没有本包概念,较 默认访问 可以被在其他包下的子类访问)
4)public 对所有类可见 (同c++)
其中1)4)与c++相同,对2)3)做简单测试
3)protected 对本包可见测试如下:
package com.behavior;
public class Parent {
protected int i = 3;
}
package com.behavior;
//与Parent在同一个包下,无继承关系
public class Children {
public void action() {
Parent parent = new Parent();
System.out.print(parent.i);
}
}
package com.stratege;
import com.behavior.Children;
public class ChildrenTest {
public static void main(String [] args) {
Children children = new Children();
children.action();
}
}
验证:protected 对包内访问的权限
2)默认 对包内访问测试
将Parent中变量i 访问权限做如下修改,Children, ChildrenTest不变
package com.behavior;
public class Parent {
int i = 3;
}
验证:默认对包内访问的权限