学习_你必须知道的.net2_第一章_oo大智慧

1:面象对象概念

    1:首先要坚信和明确的一点是:万物皆对象,当然作为一个新人可能体验不是那么深,等你有一定编程经验你也许就会感叹了!万物皆对象啊。

    2:计算机就是模拟着现实世界,因此在面象对象中的基本成员:类,对象,继承,封装,多态来对我们现实世界进行模拟描述,两个不同世界,同一个情怀。

对象的出生与死亡

    1:出生:道家说:”朝闻道而夕死“,而在计算机里面的对象也是要出生入死的,就像我们人类一样,怀胎十月,一朝分娩。而计算机里面的对象也会在内存里面对‘它’进行怀孕生子,然后

        老死而释放内存,如果对象不死,在现实中则资源缺少,必定大战,一个不好就会世界末日。而计算机里面对象如果不及时死掉,就会出现程序中出现的堆栈溢出。

    2:旅程:我们从事挨踢民工,搬砖工,砖家,公务员等,因此我们从事着与我们职业相同的工作,在计算机世界里面有"整形",”浮点型“,"字符串"....等类型,他们也从事着与他们

        相对应的工作,在计算机里面本质分为两种类型:”值类型“,”引用类型“,就像我们现实世界分为:好人,坏人。国家分为:社会主义,资本主义,所以在计算机里面的值类型引

         用类型有时候为了需求,也会发生类型的变化,好人变坏人,社会主义变资本主义。

    3:属性方法:我们人类世界中会有姓名,年龄,身高等..而在计算机中这些称为属性;我们人有自我介绍,打球,吃饭...这些则称之为方法.而我们人存在就是与别的人或者事进行

         交流,以便改变自我或者改变他人。

    4:生存环境:我们生活在社会这个大框架里,而对象生活在CLR这个大框架里,而在两个社会里都制定一系列的规则与契约(接口),来维护与管理好这个世界,以便更好运行。

    5:继承多态:现实中继承一般发生在血缘关系种群中,如儿子继承老子的财产,姓氏,房子等。但是老子的私有东西,如情人,二奶,孩子是无法继承的,在面向对象中,继承

        更是无处不在;多态:在家可以撒娇,在学校上学,在公交车上座车,多态指同一个实体同时具有多种形式,而实现多态有接口实现,抽象实现 

    6:消亡:没有什么会永垂不朽,人会死,对象也一样。大自然控制我们的生死伦回,而GC控制着对象的生死伦回,GC负责的是引用类型的,也就是运行在托管堆上的,而值类

       型则会随着方法的结束而结束。引用类型是皇上觉得你对他没用了(没有对象引用了),皇上就斩了你。值类型则是野蛮时代,皇上死了,要很多人陪葬。

1.2:什么是继承

     1:一听到继承,还是熟悉的感觉,还是原来的味道,yeah(加多宝),继承主要体现面象对象中的复用,扩展,安全性,继承现实的方式主要是:实现继承,接口继承

     2:继承的本质正体现于对象的创建过程中,具体的创建过程最好自己写个继承类自己体会

     3:方法是在第一次加载到AppDomain时完成的,而对象创建时只是将其附加成员TypeHandle指向方法列表在Loader Heap上的地址上,因此方法是先于对象而存在的,对象的

     4:实现继承与接口继承:

          4.1:抽象类适合于有族层概念的类间关系,而接口最适合为不同的类提供同用的功能

          4.2:接口着重于CAN-DO,而继承多着重于IS-A关系

          4.3:接口侧重行为,而继承侧重于属性

          4.4:因为值类型是密封的(seald),只能实现接口而不能继承类

     5:执行就近原则:对于同名字段或者方法,编译器是按照其顺序查找来引用的,也就是会首先访问离他创建最近的方法或者字段

1.3:封装

     1:封装隐藏了类的具体实现细节,对外提供统一的访问接口,来操作类的内部数据成员

     2:只读字段只能在构造函数中赋值

     

1.4:多态:

     1:动态绑定是在运行期确定的,一般以继承和虚方法实现

     2:注意:.net中并不存在静态绑定,所有的.net源文件都首先被编译成IL代码和源数据,在方法执行时,IL代码才被JIT编译器即时转换成本地CPU指令。

     3:这本书的多态与接口例子与《大话设计模式一样》,代码较多。

     4:根据IL代码得知,接口的本质是一个抽象类,还有定义没有实现的abstract viitual方法

     

 

      

posted @ 2013-10-30 21:23  jessetang  阅读(250)  评论(0编辑  收藏  举报