23
2018
03

java作用域public,private,protected及不写时的区别 (转)

在说明这四个关键字之前,我想就class之间的关系做一个简单的定义:对于继承自己的class,base class可以认为他们都是自己的子女,而对于和自己一个目录下的classes,认为都是自己的朋友。

1、public:对所有用户开放,所有用户都可直接调用
2、private:私有。除了class自己之外,任何人都不可直接使用,私有财产神圣不可侵犯嘛,即便是子女,朋友,都不可使用。
3、protected:对于子女、朋友来说,就是public的,可自由使用,无任何限制;而对于其他的外部class,protected就变成private。(同一个包中的类,若不在同一个包中,必须为其子孙类才可使用

4、默认:默认可以称为friendly,但是java语言中是没有friendly这个修饰符的,这样称呼应该是来源于c++。默认的访问权限是包级访问权限

作用域        当前类    同一package   子孙类     其他package 
public            √                 √                   √               √ 
protected      √                 √                   √               × 
friendly         √                 √                    ×               × 
private         √                  ×                    ×               ×

补充说明:
       1.每个编译单元(类文件)都仅能有一个public class 
       2.public class的名称(包含大小写)必须和其类文件同名。 
       3.一个类文件(*.java)中可以不存在public class。 
        如果我们在某个包内撰写一个class,仅仅是为了配合同一包内的其他类工作,并且我们不想再为了撰写说明文档给客户(不一定是现实意义的客户,可能是调用这个类的类)看而伤脑筋;或者有可能过一段时间之后会彻底改变原有的做法,并以全新的版本代替旧版本,这种情况下一般会默认。
       4、class不可以是private和protected


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。