【JAVA学习路-think in java】第6章:访问控制总结private protected public【全网最全】

摘要:

  • private:仅仅针对类定义时,可以调用;(类作者保护机制)
  • protected:在外部包中,无法调用*;(包作者保护机制)
  • public:接口。(库用户的使用接口)
  • 除了public外,外部包能访问的唯一途径:protected,且只能是在外包的子类定义时生成子类的对象,然后调用protected.
  • default,约等于protected,唯一区别在于:default没有外包访问的唯一途径

-----------------------------------------------------------------------------------------------------------------------------------

细节:

1、同一编译单元内:

a、该类定义中,public、protected,以及private 均可以自由调用;

b、该类生成的对象,仅可以调用public、protected;

c继承类的定义中,仅可以调用public、protected;

d继承类生成的对象,仅可以调用public、protected;

2、同一包内:

a不必通过import来导入,可以直接使用。

b、在类定义的同一包内,其它编译单元可以生成类(包括基类、子类)对象,并调用public、protected数据和方法(包括子类调用基类的数据和方法),但不能调用private。如同1b

3、不同包内:

a、导入方法:

import pakgeName.*;
或者具体到类所在的编译单元:
import pakgeName.className1;import pakgeName.className2;

b

b1、类必须是public,否则其它单元中将不可见。
b2、每个类必须单独占有一个编译单元,文件名等于类名。
b3、类中允许有main函数,main()可以无参,可以不是static。

c、对于在其他编译单元中生成的类的对象,仅public变量和方法能被调用;

 

备注:每个编译单元只能有一个public类(p121),因此无法将多个类定义在同一编译单元中,却提供给其他包中的类调用。

 

表格总结:

访问权限总结
 publicprotecteddefaultprivate
类的定义YYYY
同一编译单元中类生成的对象YYYN
子类生成的对象对基类方法/数据的调用Y本包Y/外部包N本包Y/外部包NN
本包YYYN
外部包YN*NN

:在子类定义中,在各函数/方法中生成的该子类的对象,该对象可以(Y)调用基类的protected数据/方法(default不行)

但是对与非子类定义,即根据类生成对象时,protected/default是不可以(N)调用的。

附:其它该主题的博客

https://blog.csdn.net/u013771764/article/details/81226908

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值