C 多型之向上轉型

2021-08-22 02:51:02 字數 1729 閱讀 1312

基類中的虛函式允許派生類繼承時重寫此函式

虛函式使用virtual關鍵字修飾

重寫時有兩種重寫方式:

1.使用override重寫 - 覆蓋父類中的原函式 (無論是父類還是子類的例項都去呼叫子類中重寫的方法)

2.使用new(可省略)重寫 - 隱藏父類中的原函式(隱藏方法中父類的例項呼叫父類的方法,子類的例項呼叫子類的方法。)

// 基類:person

class person {

public virtual void showmess() {

console.writeline("person");

// 派生類:henan

class henan : person

public override void showmess()

console.writeline("henan");

// 派生類:hainan

class hainan : person

public new void showmess()

console.writeline("hainan");

// 呼叫:

console.writeline("**********父類本身 **********====");

person p = new person();

p.showmess();

console.writeline("**********子類henan override*****=");

henan he = new henan();

he.showmess();

console.writeline("**********子類hainan new**********");

hainan hai = new hainan();

hai.showmess();

console.writeline("**********子類henan 向上轉型*****=");

person he1 = new henan();

he1.showmess();

console.writeline("**********子類hainan 向上轉換*****");

person hai1 = new hainan();

hai1.showmess();

執行結果:

對於建立的物件是向上轉型還是向下轉型:

向上轉型:只能呼叫與父類引用中父類相同的方法,不能呼叫子類中自己定義的方法;如果在子類中重寫了,則呼叫的是子類中的方法;

person he = new henan(); // 向上轉型:子類向父類轉換

he1.showmess();

向下轉型:可以呼叫父類中的方法,也可以呼叫子類中自己定義的方法;如果子類中重寫了父類的方法,呼叫的是子類中重寫的方法;

person p = new henan(); // 向上轉型:子類向父類轉換

henan he = (henan)p; // 向下轉型:把父類物件轉換成子類物件

兩種錯誤的轉換方式:

person p = new person();

heinan hei = (heinan)p;

或person p = new heinan();

henan he = (henan)hei;

c# 多型性 | 菜鳥教程

Java 多型(向上轉型)

先來看一段 class baseclass public void test public class subclass extends baseclass public void sub public static void main string args 說明 當把乙個子類物件直接賦給父類的引...

多型向上向下轉型!

public abstract class animal public class cat extends animal void catchmouse 特有方法!public class dog extends animal void watchhouse 其實前面已經有所涉及,具體來說 以動物為...

多型,向上向下轉型

多型的前提 繼承 物件的多型 乙個物件擁有多種形態,例如小明有學生形態,有人類形態 中體現多型性 其實就是一句話,父類引用指向子類物件 person p new student 上句是向上轉型,一旦向上轉型為父類,就無法呼叫子類原本特有的內容 public class person public c...