今天,正式开始读王涛写的《你必须知道的.NET(第二版)》,刚开始读了序,觉得写的相当精彩,就被吸引住了。看了一会发现本书的特点可能就是以例举例,形象生动,比较期待的样子。虽然前面讲的概念性的东西,过于基础了,但是秉着有始有终的态度,要有个好的开始才有好的结尾,否则总感觉有什么东西落下了似的。

  笔记

  

  1、其中ShowType的方法为虚函数,这种在子类中实现虚函数的方式,成为方法的动态绑定,是实现面向对象的另一特性:多态的基本机制。

  2、Eagle实现了接口IFlyable,这样保证了对象和行为的分离,保护了系统的完整性。

  3、继承本质论:字段的创建,Chicken创建首先找到Bird,然后再找到Animal,以此类推,递归结束,最终找到Object,依次进行分配空间,最高层类排在最前面。方法表的创建,是在类第一次加载到APPDoMain时完成的,在创建方法表时只是将其附加成员TypeHandle指向方法列表在Loader Heap上的地址。Chicken创建时,首先将Bird中所有的的虚方法复制一份,然后和Chicken本身的方法列表对比,如果子类中已经复写了的,则以子类覆盖父类的虚方法。

  4、面向对象的基本原则:多聚合,少继承;低耦合,高内聚。

  5、适配器模式:类的适配器,是将每个类下面都继承相应的适配器,适配器统一实现接口,这样达到适配的效果;对象的适配器,是建立统一的适配器类,实现接口,在适配器类中,以聚合的方式进行对每个类的功能实现。

  6、所谓的封装,就是你只有拿卡能在ATM机上取钱,你拿砖头塞不进去,拿公交卡也不识别。哈哈~~~

  7、封装性告诉我们,类中的字段最好设置成Private,可通过属性进行与外界交互。这样有两点好处:一是提高了数据安全性,二是

  8、反编译属性后,发现其编译后的结果就是get_属性名、set_属性名,这说明属性编译过程,就是将其变成两个相应的简单方法。

  9、总结如下:

  

  

  10、多态分为:基类继承式多态(IS-A)和接口实现式多态(CAN-DO)。

  

  11、好的设计通常是面向抽象的,接口是实现这一思想的完美手段之一,高层依赖抽象,不依赖具体。接口隔离原则强调接口应该被声明为具有单一功能的小接口,而不是实现为具有多个功能的胖接口。

  //好吧,今天就暂时告一段落,明天继续。

  

第一章 OO大智慧的更多相关文章

  1. 从结构和数字看OO——面向对象设计与构造第一章总结

    不知不觉中,我已经接触OO五周了,顺利地完成了第一章节的学习,回顾三次编程作业,惊喜于自身在设计思路和编程习惯已有了一定的改变,下面我将从度量分析.自身Bug.互测和设计模式四个方向对自己第一章的学习 ...

  2. [head first 设计模式] 第一章 策略模式

    [head first 设计模式] 第一章 策略模式 让我们先从一个简单的鸭子模拟器开始讲起. 假设有个简单的鸭子模拟器,游戏中会出现各种鸭子,此系统的原始设计如下,设计了一个鸭子超类,并让各种鸭子继 ...

  3. 《Django By Example》第一章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:本人目前在杭州某家互联网公司工作, ...

  4. MyBatis3.2从入门到精通第一章

    第一章一.引言mybatis是一个持久层框架,是apache下的顶级项目.mybatis托管到goolecode下,再后来托管到github下.(百度百科有解释)二.概述mybatis让程序将主要精力 ...

  5. Nova PhoneGap框架 第一章 前言

    Nova PhoneGap Framework诞生于2012年11月,从第一个版本的发布到现在,这个框架经历了多个项目的考验.一直以来我们也持续更新这个框架,使其不断完善.到现在,这个框架已比较稳定了 ...

  6. 第一章 MYSQL的架构和历史

    在读第一章的过程中,整理出来了一些重要的概念. 锁粒度  表锁(服务器实现,忽略存储引擎). 行锁(存储引擎实现,服务器没有实现). 事务的ACID概念 原子性(要么全部成功,要么全部回滚). 一致性 ...

  7. 第一章 Java多线程技能

    1.初步了解"进程"."线程"."多线程" 说到多线程,大多都会联系到"进程"和"线程".那么这两者 ...

  8. 【读书笔记】《编程珠玑》第一章之位向量&位图

    此书的叙述模式是借由一个具体问题来引出的一系列算法,数据结构等等方面的技巧性策略.共分三篇,基础,性能,应用.每篇涵盖数章,章内案例都非常切实棘手,解说也生动有趣. 自个呢也是头一次接触编程技巧类的书 ...

  9. 《JavaScript高级程序设计(第3版)》阅读总结记录第一章之JavaScript简介

    前言: 为什么会想到把<JavaScript 高级程序设计(第 3 版)>总结记录呢,之前写过一篇博客,研究的轮播效果,后来又去看了<JavaScript 高级程序设计(第3版)&g ...

随机推荐

  1. Jquery Easy UI--datagrid的使用(转)

    第一篇学的是做一个管理的外框,接着就是数据datagrid绑定了,这里我用asp.net mvc3来做的,主要就是熟悉属性.方法. 打开easyui的demo 就可以看到如下一段代码: 和上篇一样cl ...

  2. linux下RTNETLINK answers: File exists的解决方案

    重启网卡时 出现 :RTNETLINK answers: File exists  提示 以下是网卡出来错误的解决方法: 第一种: 和 NetworkManager 服务有冲突,这个好解决,直接关闭 ...

  3. poj 2942 Knights of the Round Table 圆桌骑士(双连通分量模板题)

    Knights of the Round Table Time Limit: 7000MS   Memory Limit: 65536K Total Submissions: 9169   Accep ...

  4. linux文件压缩与打包

    在linux中常见的压缩命令 首先,在linux中压缩文件的扩展名大多是 *.gz gzip程序压缩的文件 *.bz2 bzip2程序压缩的文件 *.tar tar程序打包的数据,并没有压缩过 *.t ...

  5. C++ pair用法

    Pair类型概述 pair是一种模板类型,其中包含两个数据值,两个数据的类型可以不同 1.定义(构造): 1 pair<int, double> p1; //使用默认构造函数 2 pair ...

  6. three Sum

    Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all un ...

  7. JVM 运行时数据区域

    Java虚拟机管理的内存包括以下几个运行时数据区域: 1.程序计数器: 程序计数器是一块比较小的内存空间,是当前线程执行的字节码行号指示器.Java多线程是通过线程轮流切换来实现的,所以每个线程都有一 ...

  8. uva 120 stacks of flapjacks ——yhx

     Stacks of Flapjacks  Background Stacks and Queues are often considered the bread and butter of data ...

  9. 【C++】array初始化0

    让代码...优雅? ==================分割线==================== 局部数组:没有默认值,如果声明的时候不定义,则会出现随机数(undefined):如果声明的长度 ...

  10. 边工作边刷题:70天一遍leetcode: day 85-1

    Inorder Successor in BST 要点:这题要注意的是如果不是BST,没法从树结构上从root向那边找p,只能遍历.而根据BST,可以只走正确方向 如果不检查right子树,可以从ro ...