《面向对象的思考过程(原书第4版)》一1.6 究竟什么是类-阿里云开发者社区

开发者社区> 华章计算机> 正文

《面向对象的思考过程(原书第4版)》一1.6 究竟什么是类

简介: 简单地说,类是对象的蓝图。当你实例化一个对象时,你基于类来构建这个对象。事实上,尝试解释类和对象实际上是一个先有鸡还是先有蛋的问题。描述类时不使用术语对象是非常困难的,反之亦然。例如,个人自行车是一个对象。
+关注继续查看

本节书摘来自华章出版社《面向对象的思考过程(原书第4版)》一书中的第1章,第1.6节,[美] 马特·魏斯费尔德(Matt Weisfeld) 著黄博文 译更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.6 究竟什么是类

简单地说,类是对象的蓝图。当你实例化一个对象时,你基于类来构建这个对象。事实上,尝试解释类和对象实际上是一个先有鸡还是先有蛋的问题。描述类时不使用术语对象是非常困难的,反之亦然。例如,个人自行车是一个对象。然而,有人已经创建了蓝图(就是类)来建造这个自行车。在面向对象的软件中,对比先有鸡还是先有蛋的问题的不同之处在于,我们知道对象和类哪个先出现(类先出现)。如果没有类,对象无法被实例化。因此本节很多概念与本章之前的很多内容都很相似,特别是我们讨论属性和方法时。
为了解释类和方法,我们可以拿关系型数据库来举例。在数据表中,表自身的定义(即字段、描述和数据类型)是类(即元数据),而对象则是表中的行(即数据)。
本书关注于面向对象的软件开发,但不局限于具体的语言实现(比如Java、C#、Visual Basic .NET、Objective C或者C++)。但经常使用代码示例可以帮助大家理解,所以必要时我会在本书中使用Java代码来帮助解释一些概念。而且每章的结尾会包含本章代码示例的C#版。在出版社网站可以获取到本书中出现的大部分代码。我们也在网上提供了Java、C# .NET、VB .NET和Objective C版本的示例代码。
接下来的小节会描述类的一些基本概念,以及它们之间的关系。

1.6.1 创建对象

类可以认为是对象的模板或者模具,正如图1-10中的饼干模具一样。类用来创建对象。


7805f3573967958415c145b7c438028f84793e85



类可以认为是一种更高级别的数据类型。例如,你创建了一个整数或浮点数:
 int x;
float y;

你也可以使用预先定义的类创建一个对象:

myClass myObject;

本例中,通过名称可以明显看出myClass是类,而myObject是对象。
请记住每个对象有自己的属性(数据)和行为(函数或惯例)。类定义了使用该类创建的所有对象具有的属性和行为。类是一块代码。可以单独分发使用类实例化的对象,也可以将类作为程序库的一部分进行分发。因为对象从类中创建,所以类必须定义对象的基础材料(即属性、行为和消息)。总之,在创建对象之前必须先设计一个类。
例如,以下是对Person类的定义:


056328e26a7f2c35fb6f6010676912fa86c67a5c


1.6.2 属性

正如你看到的一样,类的数据通过属性来表示。每个类必须定义属性,用来存放该类实例化的每个对象的状态。在上一小节中的Person类的例子中,Person类定义了name和address两个属性。
访问控制
当数据类型或方法被定义为public时,其他对象可以直接访问它。当数据类型或方法被定义为private时,只有自身对象可以访问它。另一个访问修饰符protected只允许相关对象访问,第3章会讲述该点。

1.6.3 方法

正如你本章之前学到的一样,方法实现了一个类需要的行为。从某个类实例化的每个对象都拥有该类中定义的方法。有些方法可以调用其他对象(或信息)的行为,而有些方法则提供该类底层的内部行为。内部行为是私有方法,不允许其他对象访问。在Person类中,行为有getName()、setName()、getAddress()、setAddress()。其他对象可以通过这些方法检查或修改该对象属性值。这是面向对象的系统中常用的技术。在任何情况下,对对象中属性的访问应该由该对象自身控制,任何一个对象都不应该直接修改其他对象的属性。

1.6.4 消息

消息是对象之间的通信机制。例如,当对象A调用了对象B的一个方法,对象A向对象B发送了一个消息。对象B的响应由其返回值定义。其他对象只能调用一个对象的公共方法,而无法调用其私有方法。以下代码验证了该点:


f8f6b756d0a2c9a64e955a6f53b5772f4f7f9828



在该例子中(假设Payroll对象已经

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
一文带你迅速搞懂包是什么 | 带你学《Java面向对象编程》之六十七
高效的编程往往免不了多人合作,本节提到的包的概念可以有效避免重名类出错的问题。
322 0
过程式语言与面向对象语言的区别
过程式语言与面向对象语言,到底有什么区别?可能是初学者常碰到的问题。简单来说,过程式语言整个是构建在动词上的语言。比如,最常见的经典过程式语言- C语言,打印一条语句的语法是printf(), 这个方法的名字本身就是一个动词,这个动词强调了一个动作的过程,所谓过程式就是这个意思。
481 0
《面向对象的思考过程(原书第4版)》一 第3章 高级的面向对象概念
构造函数对于结构化编程的程序员来说是个新概念。非面向对象的语言(比如COBOL、C和Basic)通常不会用到构造函数。C/C++中的结构体(struct)具有构造函数。前两章提及过这个用于构造对象的特殊方法。
1148 0
《面向对象的思考过程(原书第4版)》一1.1 基本概念
本节书摘来自华章出版社《面向对象的思考过程(原书第4版)》一书中的第1章,第1.1节,南森·马茨(Nathan Marz) [美] 詹姆斯·沃伦(JamesWarren) 著 马延辉 向 磊 魏东琦 译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
919 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4614 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
10784 0
软件工程——面向过程的软件设计方法
  面向过程的软件设计方法是一种最为实际的设计方法。面向过程是一种以过程为中心的编程思想,就是先分析整个程序所需要的步骤,然后通过函数把这些步骤一个一个实现,在程序设计的时候有需要直接调用就行了。
868 0
10059
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载