權限修飾符
本類 | 同一包下的類 | 不同包下子類 | 不同包下無關類 | |
---|---|---|---|---|
private | Y | |||
默認的 | Y | Y | ||
protected | Y | Y | Y | |
public | Y | Y | Y | Y |
一.本類中可以直接訪問的驗證
package a1.a2.a3; class Father{ private void show(){ System.out.println("show"); } void show2(){ System.out.println("show2"); } protected void show3(){ System.out.println("show3"); } public void show4(){ System.out.println("show4"); } public static void main(String[] args){ Father f =new Father(); f.show(); f.show2(); f.show3(); f.show4(); } }
二.同一包下的類驗證
1.//同一包下子類訪問父類
package a1.a2.a3; class Son extends Father{ public static void main(String[] args){ Father f =new Father(); //f.show(); //編譯時直接報錯 f.show2(); f.show3(); f.show4(); System.out.println("------------"); Son s =new Son(); //s.show(); //編譯時直接報錯 s.show2(); s.show3(); s.show4(); } }
2.//同一包下無關類訪問
package a1.a2.a3; class Test{ public static void main(String[] args){ Father f =new Father(); //f.show(); //編譯直接報錯 f.show2(); f.show3(); f.show4(); } }
三.不同包下的類驗證
1.//不同包下子類訪問父類
package b1.b2.b3;
import a1.a2.a3.Father;
class Son2 extends Father{
public static void main(String[] args){
Father f =new Father();
//f.show(); //編譯時直接報錯
//f.show2(); //編譯時直接報錯
//f.show3(); //編譯時直接報錯
f.show4();
System.out.println("------------");
//son2可以訪問protects
Son2 s =new Son2();
//s.show(); //編譯時直接報錯
//s.show2(); //編譯時直接報錯
s.show3();
s.show4();
}
}
2.//不同包下無關類訪問
package b1.b2.b3; import a1.a2.a3.Father; class Test2{ public static void main(String[] args){ Father f =new Father(); //f.show(); //編譯時直接報錯 //f.show2(); //編譯時直接報錯 //f.show3(); //編譯時直接報錯 f.show4(); } }
權限修飾符:private.默認的.protected.public
狀態修飾符:static.final
抽象修飾符:abstract
類:
權限修飾符:默認修飾符.public
狀態修飾符:final //不允許使用stitac
抽象修飾符:abstract
成員變量:
權限修飾符:private.默認的.protected.public
狀態修飾符:static.final
public class Demo{ private int x = 20; int y = 20; protected int z = 40; public int a = 40 ; public final int b =50 ; public static int c =60; public static final int d = 70 ; }
構造方法:
權限修飾符:private.默認的.protected.public
public class Demo{ private Demo(){} Demo(String name){} protected Demo(String name ,int age){} public Demo(Stringname,int age ,String address){} //此處不允許使用靜態,final,abstract //public static Demo(){} //public final Demo(){} //public abstract Demo(){} }
成員方法:
權限修飾符:private.默認的.protected.public
狀態修飾符:static.final
抽象修飾符:abstract