访问权限控制

时间:2022-03-19 09:58:24

Java访问权限修饰词主要有public protected private以及默认修饰权限包访问权限

1、包访问权限

    默认访问权限没有任何关键字,但通常指包访问权限,意味着当前的包中的所有其他类对那个成员都有访问权限。

2、public 接口访问权限

   public访问权限及任何都可以访问该成员

3、protected继承访问权限

 只有继承该类的才可访问该成员

特别注意,子类对象可以访问protected,但父类对象不可访问父类的protected。

4、private访问权限

 除了包含该成员的类之外,其他任何类都无法访问该成员。



访问修饰符

同一个类

同包

不同包,子类

不同包,非子类

private

 

 

 

protected

 

public

默认

 

 

 

Test3.java
package 1class MyObject3 {protected Object clone() throws CloneNotSupportedException {       return super.clone();    }} package 2public class Test3 extends MyObject3 {    public static void main(String args[]) {       MyObject3 obj = new MyObject3();       obj.clone(); // Compile error.       Test3 tobj = new Test3();       tobj.clone();// Complie OK.    }}
这里我用Test3类继承MyObject3,注意这两个类是不同包的,否则就是示例2的情形。在Test3类中调用Test3类的实例tobjclone()方法,编译通过。而同样调用MyObject3类的实例objclone()方法,编译错误! 意想不到的结果,protected方法不是可以被继承类访问吗? 必须明确,类Test3确实是继承了类MyObject3(包括它的clone方法),所以在类Test3中可以调用自己的clone方法。但类MyObject3protected方法对其不同包子类Test3来说,是不可见的。




类的访问权限只有两种包访问权限和public访问权限