JAVA高階物件導向二:認識多型 多型的好處

小彭先森發表於2024-03-23

1.多型:在繼承/實現情況下的一種現象,表現為物件多型(兒子,學生),行為多型(跑的快慢)

方法編譯看左邊,執行看右邊

變數編譯看左邊,執行看左邊

package com.itheima.多型;

public class Test {
//物件多型,行為多型
public static void main(String[] args) {
//1.物件多型
People p1=new Teacher();
p1.run();//行為多型 識別技巧:編譯看左邊,執行看右邊
System.out.println(p1.name);
People p2=new Student();
p2.run();
System.out.println(p2.name);
}

}

class People{
public String name="父類People的名稱";
public void run(){
System.out.println("人可以跑");
}

}
class Student extends People{
public String name="子類Student的名稱";

@Override
public void run(){
System.out.println("跑的塊");
}
}
class Teacher extends People{
public String name="子類Teacher的名稱";

@Override
public void run(){
System.out.println("跑的氣喘吁吁");
}
}


2.多型的好處:

package com.itheima.多型;

public class Test {
    //多型好處
    public static void main(String[] args) {
        //好處1:實現解耦合,右邊物件可以隨時切換,後續業務隨即改變
        People p1=new Teacher();
        p1.run();
        //好處2:可以使用父類型別的變數作為形參,可以接受一切子類物件
        Student student=new Student();
        Teacher teacher=new Teacher();
        go(student);
        go(teacher);
        //p1.teach();//報錯,因為編譯看左邊,父類沒有所以報錯了
    }
    //好處2:可以使用父類型別的變數作為形參,可以接受一切子類物件
    public static void go(People p){

    }

}

class People{
    public String name="父類People的名稱";
    public void run(){
        System.out.println("人可以跑");
    }

}
class Student extends People{
    public String name="子類Student的名稱";
    public void test(){
        System.out.println("考試");
    }
    @Override
    public void run(){
        System.out.println("跑的塊");
    }
}
class Teacher extends People{
    public String name="子類Teacher的名稱";
    public void teach(){
        System.out.println("教書");
    }
    @Override
    public void run(){
        System.out.println("跑的氣喘吁吁");
    }
}

相關文章