權限修飾符


權限修飾符


本類同一包下的類不同包下子類不同包下無關類
privateY


默認的YY

protectedYYY
publicYYYY

一.本類中可以直接訪問的驗證

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();
    }
}


總結目前學到的修飾符

  1. 權限修飾符:private.默認的.protected.public

  2. 狀態修飾符:static.final

  3. 抽象修飾符: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

常見組合規則:

成員變量:public static final

成員方法:public static ; publis abstrect ;public final


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章