1. 程式人生 > >多型(多型概述、物件的型別轉換、Object類、匿名內部類)

多型(多型概述、物件的型別轉換、Object類、匿名內部類)

一、多型
多型:在同一個方法中由於傳入的引數型別不同而導致執行效果不同的現象就叫做多型。
java為了實現多型,允許使用一個父類型別的變數來引用一個子類型別的物件,根據被引用子類物件特徵的不同,得到不同的執行結果。

二、物件的型別轉換
因為多型涉及到將子類物件當做父類型別使用的情況,所以我們要學習型別的轉換。轉換有兩種,一種是向上轉換,一種是向下轉換。
向上轉型:

//父類 父類物件 =子類例項

向下轉型

//子類 子類物件=(子類) 父類例項

將子類物件當做父類使用時不需要任何顯示的宣告,但此時不能通過父類變數去呼叫子類中的某些方法。

java提供了一個關鍵字instanceof用來判斷一個物件是否為某個類或(介面)的例項或者子類例項,通常和if搭配使用

if(animal instanceof Cat){//判斷animal是否是Cat類的例項物件

}else{

}

三、Object類

所有類的父類,所有類都直接或者間接繼承自該類
通常重寫該類 toString()方法獲得自己想要的資訊
四、匿名內部類
前面說一個介面需要定一個類來實現。除此之外,還可以使用匿名內部類來實現介面。
首先看內部類方式如何實現

interface Animal{
    void shout();
}

public class Example01{
    public static void main (String [] args){
        class
Cat implements{
public void shout(){ System.out.print("這是一隻貓"); } } animalShout(new Cat()); } public static void animalShout(Animal an){ an.shout(); } }

下面看匿名內部類如何寫。

interface Animal{
    void shout();
}   

public class Example02{
    public
static void main (String [] args){ animalShout(new Cat(){ public void shout(){ System.out.print("這是匿名內部類的貓叫"); } }); } public static void animalShout(Animal an){ an.shout(); } }

匿名內部類是一種簡便寫法,在程式中不一定非要使用。