Java多型例項詳解三步走(一) 具體類多型

2021-08-21 16:09:57 字數 2041 閱讀 7837

多型的概念:多型其實是同乙個物件在不同時刻體現出來的不同狀態

多型分為三種:

本文講解為具體類多型,也是基礎。

多型的前提:

1、有繼承或者實現關係。

2、有方法重寫(因為多型就是靠方法重寫來體現不同狀態的)。

3、要有父類或者父介面引用指向子類物件。

格式:父 f = new 子()

多型中的成員訪問特點:

1、成員變數

編譯看左邊(父類),執行看左邊(子類)。

2、構造方法

建立子類物件的時候,訪問父類的構造方法,對父類的資料進行初始化

3、成員方法

編譯看左邊(父類),執行看右邊(子類)

(因為成員方法存在方法重寫,所以成員方法訪問的時候訪問的是子類)。

4、靜態方法

編譯看左邊(父類),執行看左邊(子類)

(靜態和類相關,算不上重寫,所以,訪問還是左邊)

多型的好處:

1、提高了**的維護性(由繼承來保證)

2、提高了**的擴充套件性(由多型來保證)

對於下面的**,是沒有用多型來寫的,如果建立乙個新的子類,就要在工具類中多增加乙個方法,如果建立很多個,那麼同樣的**要重複好多遍,如果用多型,就可以保證在多增加乙個類的同時,工具類中不用再增加乙個方法。這就提高了**的擴充套件性。

**1:

public

class

main

}//建立工具類

class

animaltool

//呼叫貓的功能

public

static

void usecat(cat c)

//呼叫狗的功能

public

static

void usedog(dog d)

//如果我建立乙個新的子類,就要在這裡多增加乙個方法,如果建立很多個,那麼同樣的**要重複好多遍

}//建立父類

class

animal

public

void sleep()

}//建立子類

class

catextends

animal

public

void sleep()

}//建立子類

class

dogextends

animal

public

void sleep()

}

如果用多型,就會節省很多**。因為只需要修改animaltool類,所以只給出了animaltool修改後的**。

**2:

class animaltool 

//運用多型就能很好的解決**重複的問題

public

static

void

useanimal(animal a)

}

多型的弊端:不能使用子類的特有功能。

如果想要解決就涉及到物件的轉型問題

向上轉型:fu f = new zi();

向下轉型:zi z = (zi)f; //要求f必須是能夠轉換為zi類的

例如下面的**:

public

class

main

}class

animal

}class

dogextends

animal

public

void lookdoor()

}class

catextends

animal

public

void playgame()

}

圍棋程式三步走

用什麼語言及用win還是linux無所謂。第一步 介面。要求不高,能交替著子,能自動提子 規則 能判定勝負,能記譜 不難,很多人已完成,而且能完成得不錯 不過完美的程式要充分打磨 難度係數計為2 第二步 使程式下完一局棋 用一種或幾種演算法 當然不是完全的隨機演算法 使程式能完成一局棋。其過程中能基...

ExtJs閉包三步走

構造閉包的一般步驟 1 在函式a內部定義乙個函式b 2 通過呼叫a把b的引用返回出來,賦值給其他作用域中的乙個變數c 3 通過c執行b 通過一段 來展示閉包的模版 function a return b var c a c 例 使用閉包模擬私有屬性 var person function getna...

0720 做產品,三步走

好像,事情也沒那麼複雜 發現需求做出產品以滿足需求告知需要的人 發現需求,首先要豐富自己的生活,提高自己的品位。這樣,才能發現生活中不如意的地方,也就是要改進的點。多和不同的人接觸,洞察別人的需求,也是很重要的。有了需求,就得有能力把產品做出來。落實到具體,主要是產品設計和開發。有了好產品,還得讓別...