A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© vipzh 中级黑马   /  2012-12-1 22:47  /  1048 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

private ,public,protected的作用域怎么区分?总是搞混

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

3 个回复

倒序浏览
public,protected,friendly,private的访问权限如下:


    关键字        当前类       同一package        子孙类       其他package

     public          √            √               √            √

     protected       √            √               √            ×

     friendly        √            √               ×            ×

     private         √            ×               ×            ×

     不写时默认为friendly

    public声明的变量及方法,表明在整个包内包外都可使用。
    private 声明的变量及方法,只在声明的类内可以使用。
    protected包外不可使用。包内可以使用。
   
    不使用关键字默认为包内使用。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
作用域           当前类       同一package      子孙类       其他package
public               √                    √                     √                  √
protected         √                    √                     √                   ×
friendly             √                   √                      ×                  ×
private              √                   ×                      ×                  ×


不写时默认为friendly

Java中所谓的“friendly”和“default”都只是一种说法,并不是说真有那么一个指定默认访问权限的关键字,Java中类的成员权限修饰符只有三个:public/private/protected

public :也叫是公有的 大家都可以用没有任何限制,只要你知道具体位置就可以直接那来用,想调用另外一个类的public的方法只需要创建这个类的一个对象 然后直接是用就行
protected :具有protected访问控制级别的成员是半公开的,外界无法直接访问这个控制级别的成员,但是派生类的base指针可以获得访问能力。protected与private基本相似,只有在继承时有较大的区别。继承的类可以访问protected成员,但是不能访问private成员。protected 关键字是一个成员访问修饰符。受保护成员在它的类中可访问并且可由派生类访问

private:private关键字意味着除非那个特定的类,而且从那个类的方法里,否则没有人能访问那个成员。同一个包内的其他成员不能访问private成员,这使其显得似乎将类与我们自己都隔离起来。另一方面,也不能由几个合作的人创建一个包。所以private允许我们自由地改变那个成员,同时毋需关心它是否会影响同一个包内的另一个类。默认的“友好”包访问通常已经是一种适当的隐藏方法;请记住,对于包的用户来说,是不能访问一个“友好”成员的。这种效果往往能令人满意,因为默认访问是我们通常采用的方法。
总之:使用private修饰符可以完全隐藏类的成员,使得不能从类外直接访问它们。
      不使用修饰符允许同一个包里的任何类直接访问类的成员,但是其他包中的类不可以。
      使用protected修饰符允许任何包中的子类或同一包的类的成员。
      使用public修饰符允许任何类访问类的成员。
回复 使用道具 举报
                类        包         子类       其他

     public          √            √               √            √

     protected       √            √               √            ×

     friendly        √            √               ×            ×

     private         √            ×               ×            ×

   默认为friendly

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马