多態概述
#1.多態是繼封裝、繼承之後,物件導向的第三大特性。
2.多態現實意義理解:
現實事物經常會體現出多種形態,如學生,學生是人的一種,則一個具體的同學張三既是學生也是人,即出現兩種形態。
Java作為物件導向的語言,同樣可以描述一個事物的多種形態。如Student類別繼承了Person類,一個Student的物件便既是Student,又是Person。
3.多態體現為父類別引用變數可以指向子類別物件。
4.前提條件:必須有子父類別關係。
注意:在使用多態後的父類別引用變數呼叫方法時,會呼叫子類別重寫後的方法。
5.多態的定義與使用格式
定義格式:父類別類型變數名稱=new 子類別類型();
多態中成員的特點
1.多型成員變數:編譯執行看左邊
##Fu f=new Zi();System.out.println(f.num);//f是Fu中的值,只能取到父中的值2.多型成員方法:編譯看左邊,運行看右邊instanceof關鍵字
作用:用來判斷某個物件是否屬於某種資料類型。 注意: 傳回類型為布林類型使用案例:Fu f1=new Zi(); Fu f2=new Son(); if(f1 instanceof Zi){ System.out.println("f1是Zi的类型"); } else{ System.out.println("f1是Son的类型"); }
多態的轉換
多態的轉型分為向上轉型和向下轉型兩種向上轉型:多型態本身就是向上轉型過的過程使用格式:父類別類型變數名稱=new 子類別類型();適用場景:當不需要面對子類別類型時,透過提高擴充性,或使用父類別的功能就能完成對應的操作。 向下轉型:一個已經向上轉型的子類別物件可以使用強制類型轉換的格式,將父類別參考類型轉為子類別引用各類型使用格式:子類別類型變數名稱=(子類別類型) 父類別類型的變數;適用場景:當要使用子類別特有功能時。多型案例:
範例1:package day0524; public class demo04 { public static void main(String[] args) { People p=new Stu(); p.eat(); //调用特有的方法 Stu s=(Stu)p; s.study(); //((Stu) p).study(); } } class People{ public void eat(){ System.out.println("吃饭"); } } class Stu extends People{ @Override public void eat(){ System.out.println("吃水煮肉片"); } public void study(){ System.out.println("好好学习"); } } class Teachers extends People{ @Override public void eat(){ System.out.println("吃樱桃"); } public void teach(){ System.out.println("认真授课"); } }範例2:請問題目執行結果是什麼?
package day0524; public class demo1 { public static void main(String[] args) { A a=new A(); a.show(); B b=new B(); b.show(); } } class A{ public void show(){ show2(); } public void show2(){ System.out.println("A"); } } class B extends A{ public void show2(){ System.out.println("B"); } } class C extends B{ public void show(){ super.show(); } public void show2(){ System.out.println("C"); } }
以上是Java基礎:多型的理解與應用的詳細內容。更多資訊請關注PHP中文網其他相關文章!