第一章 对象导论 1.2-1.7

1.2 每个对象都有一个接口

类描述了具有相同特性(数据元素)和行为(功能)的对象的集合,所以一个类就是一个数据类型。

如:
这里写图片描述

Light lt=new Light();                     
    lt.on();

定义对象的“引用lt”,用new方法创建新对象,向lt对象发送消息请求。

接口确定了某一特定对象所能发出的请求。

此过程:向某个对象“发送消息”(产生请求),这个对象便知道此消息的目的,然后执行对应的程序代码。

请求—- 关联 —-方法

1.3 每个对象都提供服务

高内聚 。

1.4 被隐藏的具体实现

角色:类型创建者 ,客户端程序员(消费者)。

访问控制:
public : 任何人可用
private : 除类型创建者和内部方法之外,皆不可用
protected : 与private相当,差别在于继承的类可以访问protected成员,但不能访问private成员。
无修饰词时,默认包访问权限,可访问同一包中的其他类成员,包之外,同private。

1.5 复用具体实现

某个类直接使用该类的一个对象,或者该类对象置于某个新类中(创建一个成员对象)。

使用现有类合成新的类—组合。如果组合式动态发生的—-聚合。

组合—–“has a”(拥有)关系,如汽车拥有引擎。
这里写图片描述

1.6 继承

基类和导出类产生差异方法:
(1)导出类添加新方法
(2)覆盖

判断继承关系:
(1)只覆盖基类方法 则视为纯粹替代,称替代原则
是否可用is-a(是一个)描述。“圆形是一个几何图形”
(2)导出类添加类新的方法,扩展类接口
描述为is-like-a(像是一个)
这里写图片描述

1.7 伴随多态的可互换对象

这里写图片描述

BirdControler对象仅处理泛化的Bird对象
但当move()调用时,可产生正确的行为。
为什么?

非面向对象的编译器对于函数调用使用前期绑定。使用绝对地址。

OOP中采用后期绑定。编译器确保被调用方法的存在,对调用参数和返回值执行类型检查,但不知将被执行的确切代码。使用小段特殊代码替代绝对地址调用。

向上转型:

把导出类看成基类的过程。

//1、仅和基类交互,不知做什么,总是做了该做的。 
void doSomething(Shape shape){ 
shape.erase(); 
shape.draw(); 
} 
//2、其他类 
Circle circle=new Circle(); 
Line line=new Line(); 
doSomething(circle); 
doSomething(line); 
//doSometing()可以自动的正确的处理不同的具体类型。由于多态。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值