C#类与继承 笔记

所有类都派生自object类,单继承。


派生类不能删除它所继承的任何成员。


派生类中声明新的带有相同签名的函数成员,可以隐藏或者掩盖继承的函数成员。(签名由名称和参数列表,不含返回类型)

new关键字显式告知编译器掩盖基类成员(包括静态成员),否则编译器会警告你隐藏了一个继承的成员。可使用base.XXX访问隐藏的成员。


虚方法可以使基类的访问“升至”派生类内。 

条件:  派生类的方法 和 基类方法有相同的签名和返回类型。 基类方法用virtual标注,派生类使用override标注。


构造顺序:  实例创建时,先初始化对象的所有实例成员,其次是基类构造函数,最后是自身构造函数体。


public  对任何类可访问。  

protected internal: 对所有继承该类或在该程序集内声明的类可访问。

protected       :对所有继承该类的类可访问。

internal:         对该程序集内所有类可访问。

private:          只有类的内部可访问。


从上到下,公开到似有,其中 protected 与 internal平行。


抽象成员:abstract修饰,无实现代码块,必须在派生类中用相应的成员覆写(override). 注意virtual有实现体不一定要覆写。


抽象类abstract 设计就是要被继承的,只能作为其他类的基类,可以包含抽象成员或非抽象成员。

密封方法与抽象成员相反,只能作为独立的类,不能做基类。

静态类:所有成员都是静态 static class,隐式密封,无实例构造函数,常用于数学库。


扩展方法:

假设要扩展一个类,增加方法。(不能访问代码,或该类是密封的,或者其他设计原因使这些方法不能使用,不得不在新类中使用旧类公用方法编写新方法)

你一般只能使用 ExtendHandler.NewFunc(OldClass)  而不是OldClass.NewFunc().

扩展方法允许使用第二种形式,只需要在参数声明中的类型前增加this关键字。

扩展方法: 声明扩展方法类必须是static,扩展方法本身是static,扩展方法必须包含关键字this作为第一个参数,并后面被扩展类的名称。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值