美文网首页
1.2 对象的接口

1.2 对象的接口

作者: old程序猿 | 来源:发表于2018-01-24 15:53 被阅读0次

亚里士多德或许是认真研究“类型”概念的第一人,他曾谈及“鱼类和鸟类”的问题。在世界首例面向对象语言Simula-67中,第一次用到了这样的一个概念:

所有对象——尽管各有特色——都属于某一系列对象的一部分,这些对象具有通用的特征和行为。在Simula-67中,首次用到了class这个关键字,它为程序引入了一个全新的类型(clas和type通常可互换使用;注释③)。

③:有些人进行了进一步的区分,他们强调“类型”决定了接口,而“类”是那个接口的一种特殊实现方式。

Simula是一个很好的例子。正如这个名字所暗示的,它的作用是“模拟”(Simulate)象“银行出纳员”这样的经典问题。在这个例子里,我们有一系列出纳员、客户、帐号以及交易等。每类成员(元素)都具有一些通用的特征:每个帐号都有一定的余额;每名出纳都能接收客户的存款;等等。与此同时,每个成员都有自己的状态;每个帐号都有不同的余额;每名出纳都有一个名字。所以在计算机程序中,能用独一无二的实体分别表示出纳员、客户、帐号以及交易。这个实体便是“对象”,而且每个对象都隶属一个特定的“类”,那个类具有自己的通用特征与行为。

因此,在面向对象的程序设计中,尽管我们真正要做的是新建各种各样的数据“类型”(Type),但几乎所有面向对象的程序设计语言都采用了“class”关键字。当您看到“type”这个字的时候,请同时想到“class”;反之亦然。

建好一个类后,可根据情况生成许多对象。随后,可将那些对象作为要解决问题中存在的元素进行处理。事实上,当我们进行面向对象的程序设计时,面临的最大一项挑战性就是:如何在“问题空间”(问题实际存在的地方)的元素与“方案空间”(对实际问题进行建模的地方,如计算机)的元素之间建立理想的“一对一”对应或映射关系。

如何利用对象完成真正有用的工作呢?必须有一种办法能向对象发出请求,令其做一些实际的事情,比如完成一次交易、在屏幕上画一些东西或者打开一个开关等等。每个对象仅能接受特定的请求。我们向对象发出的请求是通过它的“接口”(Interface)定义的,对象的“类型”或“类”则规定了它的接口形式。“类型”与“接口”的等价或对应关系是面向对象程序设计的基础。
下面让我们以电灯泡为例:

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

在这个例子中,类型/类的名称是Light,可向Light对象发出的请求包括包括打开(on)、关闭(off)、变得更明亮(brighten)或者变得更暗淡(dim)。通过简单地声明一个名字(lt),我们为Light对象创建了一个“句柄”。然后用new关键字新建类型为Light的一个对象。再用等号将其赋给句柄。为了向对象发送一条消息,我们列出句柄名(lt),再用一个句点符号(.)把它同消息名称(on)连接起来。从中可以看出,使用一些预先定义好的类时,我们在程序里采用的代码是非常简单和直观的。

相关文章

  • 1.2 对象的接口

    亚里士多德或许是认真研究“类型”概念的第一人,他曾谈及“鱼类和鸟类”的问题。在世界首例面向对象语言Simula-6...

  • 2018-07-16

    线程的创建:1.实现runable接口的类的run方法 1.1实现runable接口 1.2创建类对象 Runna...

  • JavaWeb基础之Listener基本用法

    用来监听特定对象的创建或销毁、属性的变化 1.监听器接口的分类 1.1、监听对象创建/销毁的监听器接口 1.2、监...

  • Java编程思想

    目录 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 实现方案的隐藏 1.4 方案的重复使用 1...

  • Thinking in Java目录

    第一章 对象导论1.1 抽象过程1.2 每个对象都有一个接口1.3 每个对象都提供服务1.4 被隐藏的具体实现1....

  • Kotlin的语法学习之旅

    目录1.1 变量1.2 if条件语句 、switch 条件语句1.3 循环语句1.4 类与对象和接口1.5 单例模...

  • Java编程思想之每天两小时(二)

    1.2每个对象都有一个接口 第一个面向对象语言Simula-67.他在程序中使用基本关键字class来引入新的类型...

  • 设计模式-规则、原则、类型

    一、面向对象的规则 1.1、对接口进行编程,而不是对实现进行编程 1.2、优先使用组合,而不是继承 二、设计模式的...

  • 泛型

    1.1 引言 1.2 动机和优点 1.3 定义泛型类和接口 1.4 泛型方法 1.5 【示例】对一个对象数组进行排...

  • dubbo源码8-请求发送响应流程

    一 接口配置 1.1 接口 1.2 consumer端 1.3 provider端 1.3.1 配置 1.3.2 ...

网友评论

      本文标题:1.2 对象的接口

      本文链接:https://www.haomeiwen.com/subject/cqpuaxtx.html