java 修饰符的作用一(public protected default private 组)

时间:2021-01-24 21:05:39

1.public protected default private 组

  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();//可访问   
               }   
      }