抽象類和上轉型對象的關係,多態和上轉型對象的關係

Part 1 抽象類和對象的上轉型對象


1、abstract方法只允許聲明不允許實現;

2、abstract不能用new運算符創建對象;

3、若一個非抽象類是某個抽象類的子類,則它必須重寫父類的抽象方法並給出方法體(也可以繼承這個abstract方     法);

4、不允許abstract和final同時修飾一個方法(理由見上條)

5、abstract類中可以有abstract方法也可以沒有


總結:abstract類只關心操作(PS:只關心方法的名字、類型、參數),不關心操作實現的細節(PS:不關心方法體)


結合以上5條,我們可以從下面小代碼理解。

<span style="font-size:14px;">package fundamental;

/*
 * 時間:1-4
 * 內容:多態,上轉型對象,抽象
 */

//一個抽象類:花類
abstract class Flower {
	void bloom(){
		}
	}

//兩個子類:玫瑰和百合
	class Rose extends Flower{
	void bloom(){
		System.out.println("玫瑰花開放了!");
		}
	}

	class Lily extends Flower{
		void bloom(){
			System.out.println("百合花開放了!");
		}
	}

public class Flower_Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Flower flower = new Rose();//flower是Rose的上轉型對象
		   flower.bloom();
		   
		   flower = new Lily();////flower是Lily的上轉型對象
		   flower.bloom();
	}

}</span>

運行結果:

玫瑰花開放了!
百合花開放了!


註釋:

1、啥是上轉型對象?

介個一開始我也理解困難,一句話:子類創建一個對象,並把這個對象的引用放到父類的對象中

(PS:對象的上轉型對象的實體是子類創建的,上轉型對象會失去原對象的一些屬性和功能,相當於子類對象的一個簡化對象)。

如:

<span style="font-size:14px;">Flower flower = new Rose();//flower是Rose的上轉型對象</span>
<span style="font-size:14px;">flower 實體 是子類Rose創建的,但是</span><span style="font-size:14px;">flower是父類Flower聲明的! </span><span style="font-size:14px;"></span>
 

2、abstract類到底有啥作用啊?

作用:是大大地提高了程序設計的效率!!由於它只關心操作不關心操作的具體實現細節,程序設計者可以把主要精力花在程序的設計上,不必拘泥細節的實現,框架設計出來後,具體的子類子類設計有子類設計者完成,就像做數學題時思路有了,具體過程慢慢算去吧。。


Part 1 多態性和對象的上轉型對象

多態性理解:父類的某個方法被其子類重寫時,可以各自產生自己的功能行爲

代碼如上(不復制了)。

簡單說明下,父類“花”的方法被子類“Rose” ,"Lily"重寫了,“Rose” 說”玫瑰花開放了!“,但是"Lily"說”百合花開放了!“,相同的方法bloom(),子類對象不同產生的行爲不同。(如果Lily說:玫瑰花開放了!——不是基因突變就是百合冒充玫瑰了大笑

這樣理解多態是不是具體多了。。

註釋:

1、用多態設計程序有啥好處呢?

可以體現程序設計所謂的開閉原則!!

介個做過項目的人都能深刻體會到,程序設計好後,首先應對abstract類的修改進行關閉,不然一旦修改abstract類

其所有子類都需要做出修改(有一次俺就這樣悲劇了!剛學Java那會,俺就是個小白癡)。


2、啥是開閉原則?

開閉原則強調一個程序應當對擴展開放,對修改關閉。(——一般結論都是抽象的,難理解的,這是結論的通病麼?)

PS:父類Flower有子類Rose ,Lily(百合) ,其他花也可以是它的子類比如鬱金香,牡丹,霸王花……這些花可以繼承父類Flower的方法(即對擴展開發),對修改關閉(見註釋1案例原因)。


總結:Well,well……我以後不想寫博文了,好累噻……

            如果有錯別字啥的,呃,(尷尬

            以上個人理解,如有不同的見解,一起討論下吧微笑微笑


發佈了26 篇原創文章 · 獲贊 46 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章