在java中,多態(tài)是同一個行為具有多個不同表現(xiàn)形式或形態(tài)的能力;多態(tài)就是同一個接口,使用不同的實例而執(zhí)行不同操作。多態(tài)的優(yōu)點:1、消除類型之間的耦合關(guān)係;2、可替換性;3、可擴充性;4、介面性;5、彈性;6、簡化性。
本教學(xué)操作環(huán)境:windows7系統(tǒng)、java8版、DELL G3電腦。
多態(tài)概述
1、多態(tài)是繼封裝、繼承之後,物件導(dǎo)向的第三大特性。
2、多態(tài)現(xiàn)實意義#:
現(xiàn)實事物常會體現(xiàn)出多種形態(tài),如學(xué)生,學(xué)生是人的一種,則一個具體的同學(xué)張三既是學(xué)生也是人,即出現(xiàn)兩種形態(tài)。????????????????????????????????????????????????????????????????????????????????????????????????????????????
Java作為面向?qū)ο蟮恼Z言,同樣可以描述一個事物的多種形態(tài)。如Student類別繼承了Person類,一個Student的物件便既是Student,又是Person。
3、多型體現(xiàn)為父類別引用變數(shù)可以指向子類別物件。
4、前提條件:必須有子父類別關(guān)係。
? ? 注意:使用多型態(tài)後的父類別引用變數(shù)呼叫方法時,會呼叫子類別重寫後的方法。
5、多型態(tài)的定義與使用格式
定義格式:父類別類型變數(shù)名稱=new 子類別類型();
6、理解:
多態(tài)是同一個行為具有多個不同表現(xiàn)或形態(tài)的能力。
多態(tài)就是同一個接口,使用不同的實例而執(zhí)行不同操作。
7、多態(tài)的優(yōu)點
#消除型別之間的耦合關(guān)係
可替換性
#可擴充性
#介面性
彈性
簡化性
8、多型存在的三個必要條件
#繼承
重寫
父類別引用指向子類別物件:
Parent p = new Child();多態(tài)中成員的特徵
- 1、多型成員變數(shù):編譯運行看左邊
Fu f=new Zi(); System.out.println(f.num);//f是Fu中的值,只能取到父中的值
2、多型成員方法:編譯看左邊,運行看右邊Fu f1=new Zi(); System.out.println(f1.show());//f1的門面類型是Fu,但實際類型是Zi,所以調(diào)用的是重寫后的方法。
作用:用來判斷某個物件是否屬於某種資料類型。
- ?注意:?返回類型為布林類型使用案例:
Fu f1=new Zi(); Fu f2=new Son(); if(f1 instanceof Zi){ System.out.println("f1是Zi的類型"); } else{ System.out.println("f1是Son的類型"); }多態(tài)的轉(zhuǎn)換??
? ? 多態(tài)性的轉(zhuǎn)換分為向轉(zhuǎn)型和向下轉(zhuǎn)型兩種
向轉(zhuǎn)型:多態(tài)本身就是向轉(zhuǎn)型化的過程? ? ? ? ? 使用格式:父類別類型變數(shù)名稱=new 子類別類型();? ? ? ? ? 適用場景:當(dāng)不需要面對子類別類型時,透過提高擴充性,或使用父類別的功能就能完成對應(yīng)的操作。
向下轉(zhuǎn)型:一個已經(jīng)向上轉(zhuǎn)型的子類別物件可以使用強制類型轉(zhuǎn)換的格式,將父類別引用類型轉(zhuǎn)為子類別引用各類型#########################使用格式:子類別類型變數(shù)名稱=(子類別類型)?父類別類型的變數(shù);######? ? ? ? ?適用情境:當(dāng)使用子類別特有功能時。 #########多型案例:#########例1:(#######理解多態(tài),可以重點看這個案例######)## #package day0524; public class demo04 { public static void main(String[] args) { People p=new Stu(); p.eat(); //調(diào)用特有的方法 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("好好學(xué)習(xí)"); } } class Teachers extends People{ @Override public void eat(){ System.out.println("吃櫻桃"); } public void teach(){ System.out.println("認(rèn)真授課"); } }###範(fàn)例2:######請問題目運行結(jié)果是什麼? ###
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"); } }###答案:A B######相關(guān)影片教學(xué)推薦:###Java影片教學(xué)######
以上是java多態(tài)如何理解的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)