繼承和抽象類中提到過,子類與父類的方法間有這些關係:
子類直接使用父類方法(但是必須父類方法是public或protected型別);
子類的方法覆蓋父類方法(override);
子類的方法過載父類方法(overload);
看下面這種情況:
public class yschool
}public string name
}public yschool()
public yschool(int id, string name)
/// /// 構造器
///
public yschool(int id)
}public class yteacher
}public string name
}public yschool school
return school;
}set
}public string introduction
set}
public string imagepath
set}
/// /// 構造器
///
public yteacher(int id, string name)
/// /// 構造器
///
public yteacher(int id, string name, yschool school)
/// /// 給學生講課的方法
///
public void toteachstudents()
老師教育同學們: good good study,day day up!", this.name));
}/// /// 懲罰犯錯誤學生的方法
/// 加virtual關鍵字,表示該方法可以被覆蓋重寫
///
///
public virtual void punishmentstudents(string punishmentcontent)
的 老師讓犯錯誤的學生 。", this.school.name, this.name, punishmentcontent));}}
public class universityteacher : yteacher
/// /// 隱藏父類的同名方法,隱藏後該類只能訪問隱藏後的方法,不能訪問到父類的該方法了。
///
public new void toteachstudents()
老師教育同學們:認真學習.net!", this.name));
}/// /// 覆蓋
///
public override void punishmentstudents(string punishmentcontent)
}
using system;
namespace yys.csharpstudy.mainconsole}}
結果:
子類繼承父類的方法,使用new修飾乙個同父類方法同名,引數列表相同的新方法的過程就叫做隱藏。也就是子類隱藏了父類的這個方法。不過隱藏與覆蓋不同,隱藏的方法只能通過該方法所在的類訪問,如果使用父類的變數,依然訪問的是被隱藏的方法。
從上面的**中可以看到,覆蓋和隱藏的區別。父類變數引用子類例項後,只能訪問被隱藏的方法,而無法訪問隱藏後的方法。但是都可以訪問到覆蓋後的方法。
還有一點就是如果想讓這個方法被子類覆蓋,那麼父類該方法必須加上virtual。隱藏父類的方法new關鍵字也可以不加。隱藏一般使用的比較少,在一些特殊的情況下解決一些問題。
C 基礎知識整理 基礎知識(2) 類
類,是物件導向語言的基礎。類的三大特性 封裝 繼承 多型。最基本的特性就是封裝性。程式設計師用程式描述世界,將世界的所有事物都看成物件,怎麼描述這個物件?那就是類了。也就是用類來封裝物件。用書上的話說,類是具有相同屬性和行為的物件的抽象。寶馬汽車 別克汽車 五菱之光汽車.基本具有相同的屬性和行為,所...
C 基礎知識整理 基礎知識(2) 類
類,是物件導向語言的基礎。類的三大特性 封裝 繼承 多型。最基本的特性就是封裝性。程式設計師用程式描述世界,將世界的所有事物都看成物件,怎麼描述這個物件?那就是類了。也就是用類來封裝物件。用書上的話說,類是具有相同屬性和行為的物件的抽象。寶馬汽車 別克汽車 五菱之光汽車.基本具有相同的屬性和行為,所...
C 基礎知識整理
在c 98中,有63個關鍵字。不能遺漏標準名稱,任何不帶標準名稱來說關鍵字個數都是耍流氓 1.定義命名空間,需要用到namespace關鍵字,後面跟命名空間的名字,然後接 中即為命名空間的成員。2.命名空間的使用 namespace n int main using n b int main usi...