第一章 对象导论:

1.1如何抽象模型?
1.万物都是对象
2.每个对象都可以被其他容器使用组装成新的对象
3.每个对象都有其类型
4.某一种特定的对象都可以接收相同的消息
5.程序是由一系列的对象的集合,他门通过彼此发消息来告诉彼此要做的事情
1.2每个对象都有一个接口
需要名字自己的任务,知道对象自己能做什么
1.3每个对象都要提供服务
意思是每个对象都应该有被外部调用的能力,否则该对象就是孤立的,自然无法构成程序的有机部分.
1.4隐藏具体实现
一般情况java类提供3中class修饰符,’public’,”private”,”protected”;但是有一种情况是缺省修饰符,表明是package间可以访问,夸包无法访问.
1.5复用的具体体现
依赖:局部变量调用,函数传参,静态方法调用.
A调用B,叫A依赖于B
以下3中不太好区分,
关联:一般使用成员变量来实现,有时也用方法形参的形式实现
聚合:是一种比较强的关联关系,java中一般使用成员变量形式实现。对象之间存在着整体与部分的关系
组合:用现有的类合成新类,这种概念叫组合.(整体和局部之分,并且组件类的.生命周期和新类同在)常常会使用构造方法来达到初始化的目的
1.6伴随多态的互换对象
 非面向对象的编译器,会进行前期绑定,在编译的时候将生成一个具体函数名的调用,而在运行是将这个调用解析到代码要执行的绝对地址.
 为了支持泛化,面向对象的编译器,采用后期绑定.当向对象发送消息时,直到调用的代码运行时才确定.编译器确保调用的方法存在,并且对参数和返回值进行类型检测,但是不知道将被执行的具体代码.
 upcasting (向上转型) 由子类转化成基类.
1.8单根继承结构
单根继承:是否所有的类最终都是继承自单一的基类?
java,以及面向OOP(除了C++之外的)所有语言都是单根继承.java的终极基类就是Object.
单根继承的好处:
  1.意味所有的对象都可以具有一个共用的接口,可以具备某些功能.所有的对象可以轻易的在堆上创建.
  2.使得垃圾回收器实现的变得容易多,这也是java相比C++重大的改进之一.
  3.对于java内部系统升级,或者需要全局改造,可以只进行对根基类进行升级或者修改,而不需要大幅度的修改代码.
1.9容器
  List, Map,Set
1.9.1参数化类型
  因为容器都具有object的同性,所以存储Object的容器可以存储任何对象,是的容器很容易被复用.因为容器只存储Object类型,所以在存储的时候必然要进行 向上转型(upcasting),会导致对象身份丢失,当取出时,他变成了Object对象引用,而不是之前对置入是的对象类型.在最终获取对象的时候必须进行 向下转型(downcasting).向下转型是不安全的.
  为了解决容器的向下转型的危险的问题,java5中引入泛型.参数化类型,在存入对象的时候就确定对象类型.
1.10对象的创建和生命周期
  java采用动态分配内存的方式.每当想要创建对象就采用new构建对象.
在Stack上创建的对象的语言,编译器可以确定对象存活的时间,并自动销毁.
但是在Heap上创建对象的语言,编译器对他的生命周期一无所知.所以java引入了垃圾回收器.
1.11异常处理
异常处理不是面向对象的特征,异常处理在面向对象语言之前就有了

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容