java-多態

一句話:父類引用指向子類對象java

格式: 父類名稱 對象名 = new 子類名稱()
或者
接口名稱 對象名 = new 實現類名稱()安全

public class Fu {
    public void main() {
        System.out.println("父類方法");
    }
    public void mainTest() {
        System.out.println("父類特殊方法");
    }
}

public class Zi extends Fu{
    @Override
    public void main() {
        System.out.println("子類方法");
    }
}

public class Mulituplate {
    public static void main(String[] args) {
        Fu objFu = new Zi();
        objFu.main();
        objFu.mainTest();
    }
}

訪問成員變量:
直接經過對象名稱訪問成員變量,誰是對象,優先使用誰,沒有則向上找。
間接經過方法訪問成員變量,方法屬於誰,則優先使用誰,沒有則向上找。
重寫了父類方法,就是50,不重寫就是20。ide

public class Fu {
    
    int num = 20;
    
    public void main() {
        System.out.println("父類方法");
    }
    public void mainTest() {
        System.out.println("父類特殊方法");
    }
}

public class Zi extends Fu{
    int num = 50;
    @Override
    public void main() {
        System.out.println("子類方法");
    }
}


//調用
public class Mulituplate {
    public static void main(String[] args) {
        Fu obj = new Zi();
        obj.main();
        obj.mainTest();
        System.out.println(obj.num); // 20

    }
}

訪問成員方法:
看new的是誰,就優先用誰,沒有則向上找。可是沒法訪問子類特有的成員。3d

使用多態的好處:使左邊的代碼更加簡單。無需修改
code

對象的向上轉型:(多態)對象

父類引用指向子類對象。blog

對象的向下轉型:
向上轉型是安全的,可是沒法訪問子類特有的成員方法
接口

對象的向下轉型必定要進行類型instanceof判斷it

if (obj instanceof Fu) {
            Zi zi = (Zi)obj;
            zi.mianZi();
        }
相關文章
相關標籤/搜索