Java类成员访问控制权限

类成员访问控制权限

 

在JAVA中有四种访问控制权限,分别为:private, default, protected, public

 

1、Private

如果一个成员方法或变量名前使用了private, 那么这个成员只能在类的内部使用。

 

2、Default

如果一个成员方法或变量名前没有使用任何访问控制符,就为default。默认的访问控制成员可以被这个包中的其它类访问(包括这个包中的子类内部以及这个包中所有类以对象.成员的方式访问)。如果这个子类不在这个包中,则子类也不能访问父类的默认访问控制成员

 

3、Protected

这个成员既可以被这个包中其它类访问,也可以被不同包中的子类内部访问

 

4、Public

可以被所有类访问,不管访问类与被访问类在不在同一个包中

 

 

总结

 

Private

Default

Protected

public

只用本类内部可访问

同一包中的类(包括子类,以及以对象.成员)

 

其它包中的子类内部

 

 

其它包中的类(对象.成员, 不是子类)

 

 

 

 

 

以下是示例代码:

 

1、包myjava.learn.package1:

 

Person.java

1

2

3

4

5

6

7

8

9

10

package myjava.learn.package1;

 

public class Person {

 

    private int a_pri = 10// private只能在本类被访问, 子类也不能访问

    int a_defaut = 11;

    protected int a_prot = 12;

    public int a_pub = 13;

     

}

  

PersonPackage1.java

1

2

3

4

5

6

7

8

9

10

11

12

13

package myjava.learn.package1;

 

public class PersonPackage1 extends Person{

     

 

    void fun(){

        // 以下当然可以被访问,因为在同一个包中的类可以访问default, protected, public

        this.a_defaut = 12;

        this.a_prot = 13;

        this.a_pub = 14;

        System.out.println( this.a_defaut );

    }

}

  

Main.java

1

2

3

4

5

6

7

8

9

10

11

12

13

14

package myjava.learn.package1;

 

public class Main {

    public static void main( String args [] ){

         

        PersonPackage1 pp = new PersonPackage1();

        pp.fun();

         

        // 同一包中的类可以以[对象.成员]访问default, protected, public

        System.out.println( pp.a_defaut );

        System.out.println( pp.a_prot );

        System.out.println( pp.a_pub );

    }

}

  

2、包myjava.learn.package2:

Main.java

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

package myjava.learn.package2;

 

import myjava.learn.package1.PersonPackage1;

 

 

import myjava.learn.package1.Person;

 

 

// 其它包中的子类

class PersonPackage2 extends Person{

     

    void PrintAttr(){

         

        // 不同包的子类只能访问父类的public, protected

        System.out.println(this.a_prot);

        System.out.println(this.a_pub );

         

    }

 

}

 

 

public class Main {

 

    public static void main(String[] args) {

        // TODO Auto-generated method stub

         

        // 其它包中的类(对象.成员, 不是子类),只能访问public成员

        PersonPackage1 pp = new PersonPackage1();

        System.out.println(pp.a_pub);

         

        PersonPackage2 pp2 = new PersonPackage2();

        pp2.PrintAttr();

 

    }

 

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值