在java中,多態是同一個行為具有多個不同表現形式或形態的能力;多態就是同一個接口,使用不同的實例而執行不同操作。多態的優點:1、消除類型之間的耦合關係;2、可替換性;3、可擴充性;4、介面性;5、彈性;6、簡化性。
本教學操作環境:windows7系統、java8版、DELL G3電腦。
1、多態是繼封裝、繼承之後,物件導向的第三大特性。
2、多態現實意義#:
現實事物常會體現出多種形態,如學生,學生是人的一種,則一個具體的同學張三既是學生也是人,即出現兩種形態。
Java作為面向對象的語言,同樣可以描述一個事物的多種形態。如Student類別繼承了Person類,一個Student的物件便既是Student,又是Person。
3、多型體現為父類別引用變數可以指向子類別物件。
4、前提條件:必須有子父類別關係。
注意:使用多型態後的父類別引用變數呼叫方法時,會呼叫子類別重寫後的方法。
5、多型態的定義與使用格式
定義格式:父類別類型變數名稱=new 子類別類型();
6、理解:
多態是同一個行為具有多個不同表現或形態的能力。
多態就是同一個接口,使用不同的實例而執行不同操作。
7、多態的優點
#消除型別之間的耦合關係
可替換性
#可擴充性
#介面性
彈性
簡化性
8、多型存在的三個必要條件
#繼承
父類別引用指向子類別物件:
Parent p = new Child();Fu f=new Zi(); System.out.println(f.num);//f是Fu中的值,只能取到父中的值
Fu f1=new Zi(); System.out.println(f1.show());//f1的门面类型是Fu,但实际类型是Zi,所以调用的是重写后的方法。
作用:用來判斷某個物件是否屬於某種資料類型。
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("认真授课"); } }
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中文網其他相關文章!