《C#与.NET3.0高级程序设计》读书笔记(二)

C#笔记第四章“C#2.0面向对象编程”

一:C#类类型
    1、如果要用过new someClass()来创建新对象,必须重定义默认构造函数
    2、仅仅返回类型不同不能重载
    3、this关键字可以用来转发构造函数调用
二、oop三大支柱:封装,继承,多态。继承有is-a和has-a的关系,多态靠虚拟和抽象来支持。

三:C#封装支持。
    1:传统访问方法和修改方法
    2:类属性,其中value代表赋值号邮编的数据,数据类型取决于代表的实际种类。
       value不是关键字。而是“上下文关键字”。
       对属性可以使用C#的内建运算符(++)。
       属性在内部实际转换成set_XXX和get_XXX,因此自己不能再定义这种的函数了。
       只读只写属性,属性的get、set也可以设定可见性级别。
       存在“静态属性”

四:C#的继承支持
    1:is-a模型
        a:每个子类应该显示调用一个合适的积累构造函数,可以使用关键字base。
        b:C#不允许多继承的出现。
        c:使用sealed关键字来密封类,不让它被继承。
    2:has-a模型(包含/委托)
    3:嵌套类型
        公共嵌套类型可以被任何人调用,私有嵌套类型只能被包含类的成员使用。嵌套类一般用来对外部类起辅助作用,而不是为了给外部世界使用。在外部使用时要使用包含类型的作用域来限定它。

五:C#的多态支持
    1:virtual和override关键字
        如果基类想定义一个可以被子类重写的方法,它必须指定方法是虚的,可以定义该方法的一个默认实现。
    2:sealed关键字也可以用到类型成员上,以防止虚成员将类被继承类型所重写。起到只密封一些方法或属性的作用。(用在非虚方法上应该没有意义,或者错误?)
    3:抽象类。
        a:不想某个类被创建实例的时候用。使用abstract关键字。
        b:强制多态。基类定义抽象方法,子类必须实现。抽象方法不包含默认的实现。
        c:抽象方法只能用在抽象类中。子类如果不实现抽象方法,也必须声明用abstract修饰。
    4:成员隐藏。如果一个派生类重定义了一个继承自基类的相同的成员,派生类就隐藏了父成员。这时编译器会报警,解决办法一是采用virtual和override,另一种是在子类类型前加上new,明确指定就是要隐藏父类的版本。可以隐藏的包括任何基类成员类型。但是使用强制类型转换仍然可以调用一个已隐藏的基类实现。

六:C#的类型转换规则
    1:当两个类之间是is-a关系时,将派生类型存储在基类引用中总是安全的。这是“隐式类型转换”。小类型到大类型。
    2:“显示类型转换”,大类型到小类型,使用前最好先用is判断下。

七:分部类型
    使用关键字partial。

八:XML注释
    这是一个大问题。GhostDoc可以自动生成部分xml注释,NDoc可以提取XML注释成帮助文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值