【java】访问控制权限

java 访问级别修饰符主要包括:private protected 和 public,可以限定其他类对该类、属性和 方法的使用权限。

修饰符 类的内部 同一个包里 子类(不同包中) 任何地方 
privateYNNN
defaultYYNN
protectedYYYN
publicYYYY

注意以上对类的修饰只有:public 和 default,内部类除外。

1、private

public class PrivateTest01 { 
    public static void main(String[] args) {  
        A a = new A();   
        //不能访问,private 声明的变量或方法,只能在同一个类中使用                       
        //System.out.println(a.id);    
    }  
} 
 
class A {    
    private int id;    
} 

2、protected

在同一个包下,建立类 ProtectedTest01、A,并建立 B 继承 A 

public class ProtectedTest01 { 
 
    public static void main(String[] args) {   
        A a = new A();   
        a.method1();   
        A b = new B();   
        b.method1();      
        B b1 = new B();   
        b1.method3();    
    }  
} 
 
class A {    
    //采用 protected 声明的变量或方法只有子类或同一个包下的类可以调用  
    protected int id = 100;      
    public void method1() {   
        System.out.println(id);   
    }    
    protected void method2() {   
        System.out.println("A.method2()");   
    } 
} 
 
class B extends A {    
    public void method1() {   
        //可以正确调用   
        //因为和 A 在同一个包下   
        System.out.println(id);   
    }    
    public void method3() {   
        //可以正确调用   
        method2();   
    } 
} 

在 test1 下建立类 C1,在 test2 下建立 ProtectedTest02 和 C2 类

package test2; 
 
import test1.C1; 
 
public class ProtectedTest02 { 
 
    public static void main(String[] args) {   
        new C2().method2();  
    }  
} 
 
class C2 extends C1 { 
 
    public void method2() {   
        //可以调用,主要原因 C2 是 C1 的子类   
        //所以可以访问 protected 声明的变量   
        System.out.println(id);   
        method1();   
    }   
} 
 
class C3 {    
    public void method3() {   
    //不能在其他类中访问 protected 声明的方法或变量   
    //new C1().method1();   
    } 
} 

3、default 

如果 class 不采用 public 修饰,那么此时的 class,只能被该包下的类访问,其他包下无法访问。

import test3.D; 
 
public class DefaultTest01 { 
 
    public static void main(String[] args) {   
        D d = new D();   
        d.method1();      
        //不能访问,只有在一个类中或在同一个包下可以访问   
        //在子类中也不能访问   
        d.method2();  
    }  
} 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值