override與new 用兩個小例子來解釋

2021-06-01 14:18:03 字數 565 閱讀 1795

例一:

class program

}public class a5

public virtual void methodb()

}public class b5 : a5

}例二:

class a

public virtual void aa()

}class b : a

public override void aa() //將這裡的override修改為new結果將是另一種情況

,y=", x, y);}}

class programs

}//注釋:以上兩個例子表明,當存在「父類引用指向子類物件」的情況時,不能明確明白執行的是子類方法,還是父類方法時,可以如下理解

//當父類方法為virtual a(),子類方法為override a()時,此時將執行子類方法,因為此時父類的方法被子類重寫了;當子類方法被改為new  a()時,此時將執行父類的方法

//(注意:這裡指的是當存在父類的引用指向子類物件的情況,如果本身就是子類物件執行方法的話,站在子類的角度看,new a() 是為了顯式隱藏基類中的方法)

new與override的區別

override是在原來的基礎上覆蓋,現在就只有子類的該方法,而父類的該方法已經不存在 new是子類生成了乙個與父類同名的新方法,此時父類的這個方法還是存在的 using system using system.collections.generic using system.linq using ...

override與new的區別

昨天參加面試,遇到乙個關於new修飾符的題,由於本人不慎,給搞錯了,糾其原因,還是因為我的c 基礎知識不牢固,關於override與new的區別平時沒有太注意。在此,為大家分享一下 如下 public class baseclass public virtual void method1 publi...

關於C 的new與override

先放出來兩個基類和派生類 public class baseclass public void method2 string desc public class derivedclass baseclass public newvoid method2 string desc new除了可以建立物件...