多型(多種狀態)的基本介紹:
方法或物件具有多種形態,是物件導向的三大特徵,多型是建立在封裝和繼承的基礎之上的。
多型的具體體現
1)方法的多型
2)物件的多型
乙個物件的編譯型別和執行型別可以不一致;
編譯型別在定義物件時就確定了不能改變;
執行型別是可以改變化的;
編譯型別看定義時 =號 的左邊,執行型別看 =號 右邊;
多型注意事項和細節討論:
1)多型的前提是:兩個物件(類)存在繼承關係;
2)多型的向上轉型:
(1)本質:父類的引用指向子類的物件;
(2)語法:父類型別 引用名 =new 子類型別();
(3)特點:編譯型別看左邊,執行型別看右邊。
可以呼叫父類中所有成員(須遵守訪問許可權)
不能呼叫子類中特有的成員
最終執行看子類的具體實現
3)多型的向下轉型:
(1)語法:子類型別 引用名 = (子類型別)父類引用;
(2)只能強轉父類引用不能強轉父類物件;
(3)可以呼叫子類型別中的所有成員。
屬性沒有重寫之說,屬性的值看編譯型別。
instanceof比較操作符,用於判斷物件是否為xx型別或xx型別的子型別:
package多型的練習main方法com.j**amj.com.j**amj.polyparamenter_;
import
j**a.sql.sqloutput;
/** * author: mr.lin
* date: 2021/11/11 0:06
* filename: ployparamenter
* description:物件導向--多型 的練習(main) */
public
class
ployparamenter
public
void
showempannual(employee e)
public
void
testworke(employee e)
else
if (e instanceof
manager)
else}}
型別是子類型別經理
package普通員工com.j**amj.com.j**amj.polyparamenter_;
/** * author: mr.lin
* date: 2021/11/11 0:07
* filename: manager
* description: 經理類 */
public
class manager extends
employee
public
void
management()
@override
public
void
wage()
}
package員工(父類)com.j**amj.com.j**amj.polyparamenter_;
/** * author: mr.lin
* date: 2021/11/10 23:51
* filename: polyparamenter
* description: 物件導向--多型 的練習(員工) */
public
class
employee
public
void
wage()
public
string getname()
public
void
setname(string name)
public
double
getannual()
public
void setannual(double
annual)
}
c 物件導向程式設計 多型
多型 即指多個不同的類對同乙個方法的不同實現。多型允許子類對從父類繼承的方法進行重新實現 多型的使用在c 中,子類使用new關鍵字來隱藏父類成員,通過方法的隱藏和方法的重寫實現多型。第一種方法的隱藏 實際呼叫父類方法 定義人類,包含工作方法 class person 定義醫生類和程式設計師類 cla...
Python 物件導向程式設計 多型
多型 傳入不同的物件,產生不同的效果 多型是一種使用物件的方式,子類重寫父類方法,呼叫不同子類物件的相同父類方法,可以產生不同的執行結果 好處 呼叫靈活,更容易編寫出通用的 做出通用的程式設計,以適應需求的不斷變化。實現步驟 1.定義父類,並提供公共方法 2.定義子類,並重寫父類方法 3.傳遞子類物...
物件導向程式設計(封裝 繼承 多型)
1 保證 資料的安全性 2 遮蔽 複雜性 3 封裝型別 普通 封裝成方法 方法都封裝在乙個類中。using system namespace lesson01 public void close class mainclass 1 被繼承類 父類 基類 繼承類 子類 派生類 2 子類可以擁有父類的全...