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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 北极£莜蓝 中级黑马   /  2014-6-8 22:43  /  1035 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public ,protected default ,private该怎么用

1 个回复

倒序浏览
  public 权限最大,同类,同包,不同包,同包子类父类之间,不同包子类父类之间都可以访问。

   java 默认的权限是default,即friendly(注:friendly 在java中没有,是c的说法。) 同类,同包,同包子类父类都可以访问。

   protected受保护的,同类,同包,同包子类父类,不同包子类父类都可以访问

   private 私有的权限最小,同类可以访问。

   图如下:

      位置                           private       默认    protected     public
同一个类                             是             是           是             是
同一个包内的类                    否             是           是             是
不同包内的子类                    否             否           是             是
不同包并且不是子类              否             否           否             是

public 访问权限最高,不论是不是同一个包或是否是子类 都可以访问
protected 其次只有是不同包且不是子类的无法访问外,其它均可
默认级别 次之,要求只能是同一个包中的类才能访问
private 只能是同一个类才能访问

这些修饰符可以修饰方法或者属性,但是类只能用public 或者不写.

实例:

package test;

//访问修饰符的使用
public class PublicClass{

         public String publicVariable = "publicVariable" ;
         private String privateVar = "private var";
         protected String protectedVar ="protected var";
         String defaultVar="defaultVar";

         public void showPublic(){
                   System.out.println("showPublic method!");
              }

         public void showProtected(){
                   System.out.println("Show protected method!");
              }

         void showDefault(){
                   System.out.println("Show default method!");
              }



         private void showPrivate(){
                   System.out.println("Nobody will access!");
              }

     }


Java代码
package test;   
   
//import test.PublicClass;   
class TestPublic{   
         private String var =" private variable in class-Test!";   
            
         public static void main(String args[]){   
                    TestPublict = new TestPublic();   
                    PublicClass pClass = new PublicClass();   
                   //另外一个类中的共有属性和方法是可以被外界所访问的   
                    System.out.println("可以访问到的资源属性:"+pClass.publicVariable);//可访问   
                    pClass.showPublic();       // 可访问   
                   //以下两条编译错误,在另外一个类中的私有方法是访问不到的         
                   //System.out.println("可以访问到的资源属性:"+pClass.privateVariable );      //不能访问   
                 //    pClass.showPrivate();        //不能访问   
                //私有变量自己可以访问   
                  System.out.println("私有变量自己可以访问"+t.var);   
                  //protected 成员可以被该类的成员和子类的成员访问。   
                  // 还可以被同一个包中内的其他类成员访问   
                  System.out.println("可以访问到的资源属性:"+pClass.protectedVar);//可访问   
                  pClass.showProtected();//可访问   
                  System.out.println("可以访问到的资源属性:"+pClass.defaultVar);//可访问   
                  pClass.showDefault();//可访问   
               }   
      }  

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

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