java多態(tài)簡單例子:首先有一個Animal類,它有Cat,和Dog兩個子類;然后在Animal中有個say方法,當(dāng)Cat調(diào)用這個方法的時候輸出的是“小貓喵喵喵”,當(dāng)Dog調(diào)用這個方法時,輸出的是“小狗汪汪汪”。
【相關(guān)學(xué)習(xí)推薦:java基礎(chǔ)教程】
多態(tài):
多態(tài)
指同一個實(shí)體同時具有多種形式。它是面向?qū)ο蟪绦蛟O(shè)計(OOP)的一個重要特征。如果一個語言只支持類而不支持多態(tài),只能說明它是基于對象的,而不是面向?qū)ο蟮摹?/p>
多態(tài)是出現(xiàn)在具有繼承關(guān)系的兩個類的對象之間,所以它不像方法重載(發(fā)生在一個類中)在編譯期間發(fā)生(也就是確定下來),而是在運(yùn)行期間發(fā)生(確定下來)。
一個父類類型的引用可以指向他任何一個子類的對象
[相同]類域的[不同]對象執(zhí)行[同一]方法的時候會有[不同]的表現(xiàn)
有一個比較經(jīng)典的多態(tài)實(shí)例:
有一個Animal類,它有Cat,和Dog兩個子類,在Animal中有個say方法,當(dāng)Cat調(diào)用這個方法的時候輸出的是“小貓喵喵喵”,當(dāng)Dog調(diào)用這個方法時,輸出的是“小狗汪汪汪”,這就是Java多態(tài)的實(shí)現(xiàn)。
這里我們寫另外一個:
—父類:Person.java
import java.util.Scanner; public class Person { public int salary; public int allSalary(){ return 0; } public static void main(String[] args) { Person p = null; for (int n = 0; n < 3; n++) { @SuppressWarnings("resource") Scanner sc = new Scanner(System.in); System.out.println("請輸入一個1-3的數(shù)字:n1 is Teachern2 is Scientisn3 is Waiter"); int i = sc.nextInt(); //分別指向了不同的子類,輸出的結(jié)果是不一樣的 if (i == 1) { p = new Teacher(5000); System.out.println(p.allSalary()); } else if (i == 2) { p = new Scientist(5000); System.out.println(p.allSalary()); } else if (i == 3) { p = new Waiter(5000); System.out.println(p.allSalary()); } else { System.out.println("?n請輸入1-3"); } } } }
—子類:Scientist .java
public class Scientist extends Person{ public Scientist(int salary){ this.salary = salary; } public int allSalary(){ int aa = salary*12+36500; System.out.print("五五開一年的工資:"); return aa; } }
Waiter.java
public class Waiter extends Person{ public Waiter(int salary){ this.salary = salary; } public int allSalary(){ int aa = salary*12; System.out.print("服務(wù)員一年的工資:"); return aa; } }
Teacher .java
public class Teacher extends Person{ public Teacher(int salary){ this.salary = salary; } public int allSalary(){ int aa = salary*12+3650; System.out.print("教師一年的工資:"); return aa; } }
想了解