java-多態
多態的定義:指允許不同類的對象對同一消息做出響應.而重載不一樣,重載是指同一個方法名(只指的是名字),有多個不同的版本
多態存在的三個必要條件
一、要有繼承;
二、要有重寫;
三、父類引用指向子類對象
例子:
interface Animal{ //定義一個接口
void shout(); //定義抽象shout()方法
}
//定義Dog類實現Animal接口
class Cat implements Animal{
public void shout(){
System.out.println("汪汪");//重寫shout方法
}
public void sleep(){
System.out.println("狗在睡覺");//定義一個新方法
}
}
public class DuoTai{
public static void main(String[] args){
Animal an1=new Cat();//創建Cat對象,使用Animal類型的變量an1引用
animalShout(an1);//調用animalShout()方法,將an1作為參數傳入
}
//定義靜態的animalShout()方法,接受一個Animal類型的參數
public static void animalShout(Animal animal){
animal.shout();
}
}
在多態的學習中,將子類對象當作父類類型來使用
如上例中Animal an1=new Cat();把Cat對象當做Animal類型來使用,註意此時不能用父類變量去調用子類中的新的定義方法,把上面例子改為
/*
public static void animalShout(Animal animal){
animal.shout();
animal.sleep();
}
//就會報錯找不到sleep()方法因為在Animal類中沒有定義sleep()方法,面對這種情況,可以采用強制類型轉換
public static void animalShout(Animal animal){
Cat cat=(Cat)animal;
cat.shout();
cat.sleep();
}
java-多態