java 多型知識點

公子Learningcarer發表於2024-06-26
class day6_26_1{
    public static void mian(String[] args){
        Fu2 fu2 = new Zi2();//父類引用子類物件
        fu2.print();//fu
    }
}
class Fu2{
    public void print(){
        System.out.println("fu");
    }
}
class Zi2 extends Fu2{//有繼承關係
    public void print(){
        System.out.println("zi");
    }
}

/*
    多型
    什麼是多型?
        多種狀態
        是指一個物件在不同的時刻,表現出來的不同形態
        比如說:一個水滴,分為液態-氣態-固態
    多型的前提條件?
        1,要有繼承關係
        2,要有方法重寫
        3,要有父類引用指向子類物件
     成員變數
     口訣:編譯看左邊,執行看左邊
     成員方法
     口訣:編譯看左邊,執行看右邊
   靜態方法(static)
   口決:編譯看左邊,執行看左邊
class Fu2{ public void print(){ } } class Zi2 extends Fu2{//有繼承關係 public void print(){//有方法重寫 } } class Demo{ public static void mian(String[] args){ Fu2 fu2 = new Zi2();//父類引用子類物件 } } */ /* 多型間子父類之間成員變數的關係? 父類中有一個成員變數,子類中有一個成員變數 如果兩個變數的名字不同的話: class Fu2{ int i = 1; } class Zi2 extends Fu2{//有繼承關係 int j = 2; } class day6_25_2{ public static void mian(String[] args){ Fu2 fu2 = new Zi2();//父類引用子類物件 System.out.println(fu2.i); System.out.println(fu2.j);//編譯報錯 } } 透過結果分析,父類引用中不能使用子類的成員變數 如果兩個變數的名字不同的話: class Fu2{ int i = 1; } class Zi2 extends Fu2{//有繼承關係 int i = 2; } class day6_25_2{ public static void mian(String[] args){ Fu2 fu2 = new Zi2();//父類引用子類物件 System.out.println(fu2.i); } } 透過結果分析,父類引用只能使用自身帶的成員變數,不能使用子類中的成員變數 多型間子父類之間成員方法的關係? 父類中有一個成員方法,子類中有一個成員方法 class Fu2{ public void printfu(){ System.out.println("fu"); } } class Zi2 extends Fu2{//有繼承關係 public void printzi(){ System.out.println("zi"); } } class day6_25_2{ public static void mian(String[] args){ Fu2 fu2 = new Zi2();//父類引用子類物件 fu2.printfu();//fu fu2.printzi();//編譯報錯 } } 透過結果分析,父類中不能使用子類特有的方法 如果兩個方法的名字相同的話: class day6_26_1{ public static void mian(String[] args){ Fu2 fu2 = new Zi2();//父類引用子類物件 fu2.print();//zi } } class Fu2{ public void print(){ System.out.println("fu"); } } class Zi2 extends Fu2{//有繼承關係 public void print(){ System.out.println("zi"); } } 透過結果分析,父類引用可以使用子類中重寫父類的方法 */

相關文章