第一章 OO大智慧
今天,正式开始读王涛写的《你必须知道的.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大智慧的更多相关文章
- 从结构和数字看OO——面向对象设计与构造第一章总结
不知不觉中,我已经接触OO五周了,顺利地完成了第一章节的学习,回顾三次编程作业,惊喜于自身在设计思路和编程习惯已有了一定的改变,下面我将从度量分析.自身Bug.互测和设计模式四个方向对自己第一章的学习 ...
- [head first 设计模式] 第一章 策略模式
[head first 设计模式] 第一章 策略模式 让我们先从一个简单的鸭子模拟器开始讲起. 假设有个简单的鸭子模拟器,游戏中会出现各种鸭子,此系统的原始设计如下,设计了一个鸭子超类,并让各种鸭子继 ...
- 《Django By Example》第一章 中文 翻译 (个人学习,渣翻)
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:本人目前在杭州某家互联网公司工作, ...
- MyBatis3.2从入门到精通第一章
第一章一.引言mybatis是一个持久层框架,是apache下的顶级项目.mybatis托管到goolecode下,再后来托管到github下.(百度百科有解释)二.概述mybatis让程序将主要精力 ...
- Nova PhoneGap框架 第一章 前言
Nova PhoneGap Framework诞生于2012年11月,从第一个版本的发布到现在,这个框架经历了多个项目的考验.一直以来我们也持续更新这个框架,使其不断完善.到现在,这个框架已比较稳定了 ...
- 第一章 MYSQL的架构和历史
在读第一章的过程中,整理出来了一些重要的概念. 锁粒度 表锁(服务器实现,忽略存储引擎). 行锁(存储引擎实现,服务器没有实现). 事务的ACID概念 原子性(要么全部成功,要么全部回滚). 一致性 ...
- 第一章 Java多线程技能
1.初步了解"进程"."线程"."多线程" 说到多线程,大多都会联系到"进程"和"线程".那么这两者 ...
- 【读书笔记】《编程珠玑》第一章之位向量&位图
此书的叙述模式是借由一个具体问题来引出的一系列算法,数据结构等等方面的技巧性策略.共分三篇,基础,性能,应用.每篇涵盖数章,章内案例都非常切实棘手,解说也生动有趣. 自个呢也是头一次接触编程技巧类的书 ...
- 《JavaScript高级程序设计(第3版)》阅读总结记录第一章之JavaScript简介
前言: 为什么会想到把<JavaScript 高级程序设计(第 3 版)>总结记录呢,之前写过一篇博客,研究的轮播效果,后来又去看了<JavaScript 高级程序设计(第3版)&g ...
随机推荐
- web开发相关解决方案
HTML5 API 应用 History.js - gracefully supports the HTML5 History/State APIs pushState + ajax Notify.j ...
- LVS四种实现模式详解
一.集群cluster 当后端服务器承受不住访问的压力,提高服务器性能的解决方案会极大增加成本时,人们提出了横向扩展的解决方案.增加一台或几台服务器,提供相同的服务,通过前段分发器将访问量均匀的分配到 ...
- Linux系统之压缩、解压缩,vi编辑器,系统初始化服务和系统监控
一.正文处理,压缩与解压缩 1.内容重定向>与>> >:覆盖,将>号左边的结果覆盖到>号右边的文件中,如果文件不存在,则先创建一个新的空文件并覆盖 >> ...
- pageX和pageY
pageX() 属性是鼠标指针的位置,相对于文档的左边缘. pageY() 属性是鼠标指针的位置,相对于文档的上边缘. 例1 $(document).mousemove(function(e){ $( ...
- 虚拟机centos6.5 --设置静态ip
编辑网卡文件,vi /etc/sysconfig/network-scripts/ifcfg-eth0修改以下内容: ONBOOT=no #改为yes, BOOTPROTO=dbcp #改为stati ...
- xargs -n1 -t
杀掉删除没有释放空间的进程 可以用如下命令,当然也可以写一个循环,不过这一条命令比循环简单 lsof |grep deleted |awk '{print $2}' |xargs -n1 -t ...
- hadooop 配置多网卡 提供跨网段服务
http://hortonworks.com/blog/multihoming-on-hadoop-yarn-clusters/ https://hadoop.apache.org/docs/r2.6 ...
- 开发一个App要多少钱?APP开发报价单,APP开发外包有哪些注意事项-广州达到信息www.ddapp.com.cn
来源:广州达到信息著作权归广州达到信息所有.商业转载请联系作者获得授权,非商业转载请注明出处. 作为一个APP开发从业者,经常会有人问到:开发一个App要多少钱?下面针对这个问题来好好解答解答正经的谈 ...
- hdu-4810 Wall Painting(组合数学)
题目链接: Wall Painting Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- disabled和readonly的区别?
在博客园中看到这样一篇文章,关于disabled和readonly的区别,以前还真的没有注意它们的区别,还是有必要知道它们的区别的,所以转载了. 这两个属性有类似之处,但是区别也是巨大的,之所以说类似 ...