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异常处理
异常处理不是面向对象的特征,异常处理在面向对象语言之前就有了
第一章 对象导论:
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 本人开发一年左右,不多说附上代码. lineView1=[[UIView alloc]initWithFrame:...
- 因为工作的原因,要经常出差,每次出差短则三五天,长则十天半个月也是很正常的,所以每次出差回来都能感觉到宝宝不一样的...