Java三大特徵——多態

多態

定義:是指同一行爲,具有多種不同表現形式。

多態的前提:1.繼承或實現【二選一】

                       2.方法的重寫

                       3.父類引用指向子類對象

 

多態的體現:

                    格式:  父類類型  變量名 = new   子類對象;

                                  變量名.方法名();

代碼如下:

                   Fu f = new zi();

                    f.方法名

當使用多態方式調用方法時,首先檢查父類中是否有該方法,若果沒有,則編譯出錯;如果有,執行的是子類重寫後的方法。

代碼如下:

//定義父類
public  abstract class Animal01 {
	public abstract void eat();

}

//定義子類
public class Cat01 extends Animal01 {
		public void eat(){
			System.out.println("吃魚");
		}
}

public class Dog01 extends Animal01{
	public void eat() {
		System.out.println("吃骨頭");
	}
}

//定義測試類
public class Test01 {

	public static void main(String[] args) {
        //多態形式創建對象
		Animal01 animal01 = new Cat01();
        //調用的是Cat 的eat
		animal01.eat();
		
        //多態形式創建對象
		Animal01 animal02 = new Dog01();
        //調用的是Dog的eat
		animal02.eat();

	}

}

引用類型轉換

向上轉型:多態本身是子類類型向父類類型轉換的過程,這個過程是默認的。

當父類引用指向一個子類對象時,便是向上轉型。

使用格式:

 
父類類型  變量名 = new 子類類型();
如:Animal a = new Cat();

向下轉型:父類類型向子類類型向下轉換的過程,這個過程是強制的。

一個已經向上轉型的子類對象,將父類引用轉爲子類引用,可以使用強制類型轉換的格式,便是向下轉型。

使用格式:

子類類型     變量名    =  (子類類型)  父類變量名;

如:Cat c=(Cat) a

爲何使用轉型:

當使用多態方式調用方法時,首先檢查父類中是否有該方法,如果沒有,則編譯錯誤。也就是說,不能調用子類擁有,而父類沒有的方法。這也是多態給我們帶來的一點"小麻煩"。所以,想要調用子類特有的方法,必須做向下轉型。

演示代碼如下:

//定義父類 Animal
public  abstract class Animal {
	public abstract void eat();
}

//定義子類 Cat
public class Cat extends Animal {

	@Override
	public void eat() {
		System.out.println("吃魚");
		
	}
	
	public void sleep() {
		System.out.println("睡覺");
	}

}


//測試類
public class Test {

	public static void main(String[] args) {
		//向上轉型
		Animal a = new Cat();
		a.eat();//調用的是Animal的eat方法
		
		//向下轉型
		Cat c = (Cat)a;
		c.sleep();//調用的是Cat的sleep方法
	}

}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章