一、多態
多態:在同一個方法中由於傳入的參數類型不同而導致執行效果不同的現象就叫做多態。
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();
}
}
匿名內部類是一種簡便寫法,在程序中不一定非要使用。