访问修饰符

权限有大到小分为四种:
访问修饰符

private:只在本类中使用。
public修饰:在哪都可以用。public属于最大权限。
默认权限:只能在本包中使用。
protectd:受保护:本包中的类与其他包中的子类可以访问。

例子1:
//A.java
package cn.itcast.a;

public class A{
      private String a;
      int i = 1;

}

//B.java
package cn.itcast.a;

public class B{
      //B中不可以使用a。因为a是私有的。
      //可以调用A类的属性i。i是默认的,可以在本包内使用。
}


例子2:
//A.java
package cn.itcast.a;

public class A{
      private String a;
      int i = 1;

}

//B.java
package cn.itcast.b;

public class B{
      //B中不可以使用a。因为a是私有的。
      //可以不可以调用A类的属性i。i是默认的,可以在本包内使用。
}

//C.java
package cn.itcast.b;
import cn.itcast.a.*;                  //导入包 

public class C extends A{         //可以继承的其他包中的类。
      //不可以使用A类的属性a。因为a是私有的。
      //不可以调用A类的属性i。i是默认的,可以在本包内使用。
      //受保护成员只能在子类的里面才能用。
}



例子3:受保护的方法只能在子类的里面才能调用。
//A.java
package cn.itcast.a;

public class A{
      protected void abc(){
            System.out.println("abc...");
      }
}

//B.java
package cn.itcast.b;

public class B{
      public void show(){
             new A.abc();                              //正确。本包内可以使用。
      }
}


//C.java
package cn.itcast.b;
import cn.itcast.a.*;              

public class C extends A{    
      public void show(){
            //new A.abc();                             //受保护权限不能这样调用。
            abc();                                          //只能在子类的里面才能调用父类的受保护成员。
      }
}

//Test.java
package cn.itcast.b;

public class Test{    
      public static void main(String[] args){
            //new B().abc();                           //受保护权限,不能使用子类对象调用。
      }
}