ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

1.对象的概念

2021-09-17 15:02:50  阅读:133  来源: 互联网

标签:对象 继承 基类 接口 概念 派生类 类型


文章目录

对象的概念

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的单继承结构有很多好处。由于所有对象都具有一个公共接口,因此它们最终都属于同一个基类。
另外,单继承的结构使得垃圾收集器的实现更为容易。

标签:对象,继承,基类,接口,概念,派生类,类型
来源: https://blog.csdn.net/qq_39748549/article/details/120348957

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有