• 注册
当前位置:1313e > 默认分类 >正文

1.对象的概念

文章目录

      • *对象的概念*
        • *1.1抽象*
        • *1.2接口*
        • *1.3服务提供*
        • *1.4封装*
        • *1.5复用*
        • *1.6继承*
        • *1.7"是一个"与"像是一个"的关系*
        • *1.8多态*
        • *1.9单继承结构*

对象的概念

1.1抽象

纯粹的面向对象程序设计方法:

  1. 万物皆对象。
  2. 程序是一组对象,通过消息传递来告知彼此该做什么。
  3. 每个对象都有自己的存储空间,可容纳其他对象。
  4. 每个对象都有一种类型。
  5. 同一类所有对象都能接收相同的消息。

一个对象具有自己的状态,行为和标识。这意味着对象有自己的内部数据(提供状态)、方法(产生行为),并彼此区分(每个对象在内存中都有唯一的地址)。

1.2接口

每个对象仅能接受特定的请求。向对象发出的请求是通过它的接口定义的,对象的类型或类则规定了它的接口形式。类型与接口的对应关系是面向对象程序设计的基础。

1.3服务提供

在开发或理解程序设计时,可以将对象看成是服务提供者。
在良好的面向对象设计中,每个对象功能单一且高效。这样的程序设计可以提高代码的复用性。

1.4封装

使用访问控制的原因:

  1. 让应用程序员不要接触他们不应该触摸的部分。
  2. 使类库的创建者在不影响使用的情况下完善更新工具库。

1.5复用

组合经常用来表示拥有关系。
聚合即动态的组合。

聚合关系中,整件不会拥有部件的生命周期,所以整件删除时,部件不会被删除。再者,多个整件可以共享同一个部件。组合关系中,整件拥有部件的生命周期,所以整件删除时,部件一定会跟着删除。而且,多个整件不可以同时共享同一个部件。两个类生命周期不同步,则是聚合关系,生命周期同步就是组合关系。
使用组合关系给程序带来极大的灵活性。通常新建的类中,成员对象会使用private 访问权限,这样,应用程序员无法对其直接访问。就可以在不影响客户代码的前提下,从容地修改那些成员。也可以在运行时改变成员对象从而动态地改变程序的行为,这进一步增大了灵活性。

1.6继承

基类包含派生自它的类型之间共享的所有特征和行为。创建基类以表示思想的核心。从基类中派生出其他类型来表示实现该核心的不同方式。
从现有类型继承创建新类型。这种新类型不仅包含现有类型的所有成员(尽管私有成员被隐藏起来并且不可访问),而且更重要的是它复制了基类的接口。也就是说,基类对象接收的所有消息也能被派生类对象接收。

有两种方法可以区分新的派生类与原始的基类。第一种方法很简单:在派生类中添加新方法。这些新方法不是基类接口的一部分。这意味着基类不能满足所有需求,所以添加了更多的方法。继承的这种简单而原始的用途有时是解决问题的完美解决方案。然而,还是要仔细考虑是否在基类中也要有这些额外的方法。这种设计的发现与迭代过程在面向对象程序设计中会经常发生。
尽管继承有时意味着要在接口中添加新方法,但并非总需如此。第二种也是更重要地区分派生类和基类的方法是改变现有基类方法的行为,这被称为覆盖。

1.7"是一个"与"像是一个"的关系

对于继承可能会引发争论:继承是否应该只覆盖基类的方法(不应该添加基类中没有的方法)。如果是的话,基类和派生类就是相同的类型了,因为它们具有相同的接口。这会造成,可以用一个派生类对象完全替代基类对象,这叫做纯粹替代,也经常被称作替代原则。在某种意义上,这是一种处理继承的理想方式。经常把这种基类和派生类的关系称为是一个(is-a)关系。判断是否继承,就看类之间是否有这种is-a关系。
有时,在派生类添加了新的接口元素,从而扩展接口。虽然新类型仍然可以替代基类,但是这种替代不完美,原因在于基类无法访问新添加的方法。这种关系称为像是一个(is-like-a)关系。新类型不但拥有旧类型的接口,而且包含其他方法,所以不能说新旧类型完全相同。

1.8多态

在处理类的层次结构时,通常把一个对象看成是它所属的基类,而不是把它当成具体类。通过这种方式,可以编写出不局限于特定类型的代码。
这样的代码不会受添加的新类型影响,并且添加新类型是扩展面向对象程序以处理新情况的常用方法。

通过继承,程序直到运行时才能确定代码的地址,因此发送消息给对象时,还需要其他一些方案。为了解决这个问题,面向对象语言使用后期绑定的概念。当向对象发送信息时,被调用的代码直到运行时才确定。编译器确保方法存在,并对参数和返回值执行类型检查,但是它不知道要执行的确切代码
为了执行后期绑定,java使用一个特殊的代码位来代替绝对调用。这段代码使用对象中存储的信息来计算方法主体的地址。incident,每个对象的行为根据特定代码位的内容而不同。当向对象发送消息时,对象知道该如何处理这条消息。

1.9单继承结构

在java中,最终基类的名字就是Object。Java的单继承结构有很多好处。由于所有对象都具有一个公共接口,因此它们最终都属于同一个基类。
另外,单继承的结构使得垃圾收集器的实现更为容易。

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 162202241@qq.com 举报,一经查实,本站将立刻删除。

最新评论

欢迎您发表评论:

请登录之后再进行评论

登录