一、多型的概念:物件導向語言有三大主要特徵:封裝、繼承、多型、封裝是為了把我們需要隱藏的東西私有化,不讓別人知道,把該暴露的暴露出去;繼承提高了**的復用性,我們可以直接拿父類中的屬性,而且子父類的產生使類與類之間產生了關係,就有了多型的出現。顧名思義,多型就是事物的多種體現形態,學生軍人農民都是人,我們既可以說他們是農民、軍人又可以說他們是人,這就是多型。
二、多型的體現:多型必須是父類的引用指向子類的物件:person p=new student();當然這個前提是student 這個類extends person 這個類。多型的必要性:存在繼承關係,子父類或者是實現關係(介面中)。然後就是發生重寫,就是有重寫存在。
三、多型的好處:大大提到了**的可擴充套件性;只要我們的父類定義好了,引用指向子類,就可以呼叫子類中的方法了,**體現如下:
class duodemo
public static void function(person p) //相當於person p=new soldier();
}class person //定義乙個person類,裡面有eat()的功能
}class student extends person//定義乙個學生類,他繼承了person類,
}class soldier extends person//定義乙個軍人類,它繼承了person類
}四、多型的弊端:只能用父類的引用訪問到父類的成員,而不能訪問到子類的成員,如果需要訪問,就要把父類引用強制轉換為子類引用,就是向下轉型
如果學生中有乙個功能:study(),需要呼叫,
那麼person p=new person(); student s=student(p); s.study();就可以了。
五.多型中成員的特點:
1、首先說一下匿名物件,new student();就是沒有名字的物件,當我們對類中的方法只呼叫一次時,可以使用匿名物件。new student()、eat();但是如果多次呼叫,就必須使用引用。
另外匿名物件也可以作為乙個實際引數來傳遞,就是沒有指向,不使用引用。
2.多型中的成員函式的特點:編譯時期,看的是左邊的引用型變數所屬類中是否有呼叫的方法。就是看父類中有無被呼叫的方法。而執行時,看的是右邊,就是子類中是否有呼叫的方法。所以父類方法還是要寫的,否則是不能夠編譯通過的。
3.多型中成員變數的特點:編譯執行都是看左邊,是父類引用,就執行父類的方法,是子類引用就執行子類的方法。
4、多型中靜態變數的特點:也是看左邊,方法同上。
多型的應用
形式引數 基本型別滿足型別轉換的規則 引用型別 普通類 當乙個形參希望我們傳入的是乙個普通類時,我們實際上傳入的是該類的物件 匿名物件 抽象類 當乙個形參希望我們傳入的是乙個抽象類時,我們實際上傳入的是該類的子類對 象 子類 匿名物件 color 子類物件 子 類匿名對 象介面 當乙個形參希望我們傳...
多型的應用體現
多型的應用體現例項 package bxdstudy public class duotai 這個類是使得無論基礎生還是優等生都可以呼叫方法 class dostudent 學生類 抽象的 abstract class student 基礎生繼承 class basestudent extends ...
java多型應用
物件導向的三大特徵 1.封裝 2.繼承。3.多型 多型 乙個物件具備多種形態。父類的引用型別變數指向了子類的物件 或者是介面 的引用型別變數指向了介面實現類的物件 多型的前提 必須存在繼承或者實現 關係。動物 a new 狗 多型要注意 的細節 1.多型情況下,子父類存在同名的成員變數時,訪問的是父...