1.3 面向对象……
在我在高中通过basic而知道编程时;当我进入大学后在电脑中敲入第一个Pascal及C语言版本的HelloWorld程序时;当我在课堂上为了看见系主任讲台上大谈特谈软件工程而昏昏欲睡时,我并不知道世界上居然还有另外一种叫做“面向对象”的概念。在那时,“对象”两字总能引起一些暧昧的、不怀好意或是意味深长的笑声。哪怕纯洁如我大学时的上铺,一提起这两字,也立即会变得神神叨叨起来。
我真正接触到“面向对象”是从学习C++开始的,通过一本名叫《最新C++应用编程技术》的书,我知道了什么是类,什么是对象,什么是封装、继承、多态……,不过可惜的是,学习完C++之后,我只是用VC完成了一个小项目,并没有更多的机会通过C++更进一步去理解面向对象。真正的理解面向对象是从学习Java开始,那时候,我手头上有一本Bruce Eckel的《Thinking in Java》,这本书无疑是一本非常棒的Java书籍,可是根据我当年学习的痛苦程度,我不建议初学者以这本书作为自己的Java入门书籍,因为这本书实在太厚。
“万物皆对象(Everything is an object)”——这是我从《Thinking in Java》中借用过来,这句话告诉我们,在利用Java等面向对象的编程语言进行开发时,需要充分利用面向对象的各种特性,开发出高效的应用程序。
对于一个初学编程的人来说,总是非常容易理解面向过程式的编程方式,而不易理解面向对象。可是,当你准备使用Java进行程序开发时,必须克服这一困难,将编程的思想转到面向对象的世界中来。
废话说了不少,言归正传,在这一节中我将向大家简要介绍面向对象的一些基本概念,更为详细的内容将分别在后续章节中会分别加以介绍。
1.3.1 类
类是具有相同特征的一类事物的总称。这个很容易从现实生活中举例,比如自然界的生物按照各自的特征不同分为植物、动物和微生物这三大类,每一类生物都具有自己的特征;再如,家用电器按照用途划分可以分为电视机、冰箱、微波炉等等,相似的例子还有很多。而在程序设计中,我们也需要将待解决的问题按照的特征找出需要定义的类,通常,每个类都应当包含具有各自特点的属性和行为。
1.3.2 对象
既然万物皆对象,那什么是对象?简而言之对象就是类的一个实例,是我们在程序中所看到的一个具有自己的属性和行为的实体。对象和类是一对有关联但又有区别的概念,有时会让人有些许混淆,但总体来说是很容易区分的:例如,“人”这个概念属于类的范畴,而我家隔壁那个叫张三的邻居则属于“人”的一个实例,也即“人”的对象。
1.3.3 封装、继承与多态
封装与继承、多态被称为面向对象技术的三个基本特征。一个面向对象的编程语言基本都支持这三个特性。
封装指信息隐藏。通过封装,我们可以将对象的实现细节隐藏起来,只将需要给其他人使用的东西暴露出来。关于这句话我们该怎么理解?举个例子,工厂生产出洗衣机卖给用户,并不会将洗衣机的内部细节告诉用户,因为这些实现细节对于用户来说是没有太多的用途的,他们关心的是如何使用洗衣机洗衣服而不是洗衣机是怎么洗衣服,对于生产厂家来说,他们需要做的仅仅是告诉用户如何通过洗衣机面板上的那几个按钮实现洗涤、脱水以及烘干等操作。对于程序员来说,封装非常重要,一个定义良好的代码应该仅仅暴露了那些必须暴露的接口,而具体的实现细节则隐藏在代码的深处。不过有读者可能会问,那么在代码中如何实现封装特性呢?这个问题我先卖个关子,在后文将有具体描述。
而继承则是指一个类可以获得先前已定义类的全部特性的机制。继承最初出现的动机是为了消除代码的重复。在早期,利用继承复用他人代码,并在此基础之上添加一些新的功能、整合到自己的系统中是一种流行的做法。不过现在在大多数情况下不建议这样做,取而代之的是利用组合来实现代码的复用。
最后再谈谈多态,多态可以说是这三个特性中最难以捉摸的概念。为了说明这个问题,我们从下面这个例子开始,先看下面这句话——“有个动物在吃东西”,接着我们考虑下面的这个问题:这个动物是怎么吃东西的?(注意:这不是脑筋急转弯。)说实话,这个问题不好回答,因为动物是个很宽泛的概念,而对于不同种类的动物,它们吃东西的行为是不一样的。这个例子很能说明多态这个概念,也就是可以用一个不变的形式(“有个动物在吃东西”),当代入具体的内容之后(例如小鸡、猴子和狗都属于动物),使得整个语句的行为发生变化(每种动物吃东西的方式不同)。实际上,多态是面向对象技术中一项非常重要的内容,我们会在很多重要场合看到它的应用。不过,对于一些很简单的项目来说,特别是很多初学者利用Java编写一些小程序时,总会感觉到利用多态是非常麻烦的,这一点很正常,因为面向对象技术原本就是适合于比较大的软件项目中。
1.3.4 抽象
我将抽象放在这里,是因为经常能听见这样一种论调:抽象是面向对象技术的特性之一。我也不止一次地在书上看到过将抽象与封装相提并论。实际上,抽象是任何一个程序员——无论用的是Java还是C,抑或是VB——都需要具备的一种能力。抽象,指的是从众多事物中提取出本质的内容,而将非本质的内容抛弃,它并不是面向对象技术所特有的,而是程序员应遵循的一个普遍原则。例如,当你在自己的C语言代码中发现了大量的重复代码,而将这些代码抽取出来组成一个函数;或者你在程序的设计过程中,为解决一个问题而设计了一系列的类;又或者你在你的代码中发现利用多态可以更好的解决问题……诸如此类,都可以看到抽象的影子。
1.3.5 设计模式
设计模式可以说是目前一个非常有热度的话题,如果一个程序员不知道设计模式,那么就像到了北京不登长城,去了埃及不看金字塔一样,会遭到其他人强烈的鄙视。当然,设计模式也有自己的缺点,比如容易将一些简单的问题复杂化。但无论如何,设计模式已经成为面向对象技术中的主流内容,我们在任何地方都能或多或少的看到它的影子。设计模式的开天辟地之作是“四人团”GOF的《设计模式》一书,由他们这四人总结了自己以及前人的一些经验,归纳出23种设计模式,我们称这23种设计模式为GOF模式。对于Java程序员来说,学习设计模式是非常必要的,不过一定要记住——千万不要滥用设计模式。
分享到:
相关推荐
第一章Java起步入门.emmx
第 第 1 章 Java 开发入门 一、填空题 1、 Java EE、Java SE、Java ME 2、 JRE 3、 javac 4、 bin 5、 path、classpath 二、选择题 1、ABCD 2、C 3、D 4、B 5、B 三、简答题 1、 面向对象、跨平台性、健壮性、安全性...
第一章 Java语言的产生及其特点 第二章 Java程序开发与运行环境 第三章 Java程序设计基础 第四章 Java应用程序的基本框架 第五章 Java的类 第六章 Java图形用户接口 第七章 多线程 第八章 Java的"异常" 第九...
Java 基础入门第三版第一章作业 Java 是一种高级语言,它具有跨平台性、面向对象、简单等特点。Java 语言的基本结构由类、对象、继承、多态、封装等概念组成。在 Java 中,类是最小的程序单元,用于定义对象的行为...
第一章介绍了Java的基础概念,如对象、面向对象、javac编译器、JVM以及JRE的作用。第二章讲解了Java编程基础,包括关键字(如"class")、注释类型(单行、多行和文档注释)、数据类型(如基本数据类型和引用数据类型...
一、Java 开发入门 * Java EE、Java SE、Java ME 是 Java 的三个主要版本,分别用于企业级应用、标准版和微型设备。 * JRE(Java Runtime Environment,Java 运行时环境)提供了 Java 程序运行时所需要的基本条件和...
第一章:Java开发入门.emmx
《Java基础入门》课后习题及答案
"Java从入门到精通第一章到底二十四章"这个教程涵盖了从基础到进阶的全方位Java知识,旨在为初学者提供一个系统的学习路径。 首先,第一章通常会介绍Java的历史、特点和应用领域,以及为什么选择Java作为学习对象。...
学习Java的第一步通常是理解这些基本概念,比如声明变量、使用控制结构(如if语句和for循环)以及创建函数。 2. **类与对象**:Java是面向对象的,这意味着它基于类和对象的概念。类是对象的蓝图,定义了对象的属性...
《Java入门经典》第五章是Java编程初学者的重要学习资源,涵盖了丰富的基础知识和实践技能。在这一章中,我们通常会遇到以下几个核心知识点: 1. **基础语法**:Java的基础语法是所有编程学习的起点,包括变量声明...
本资源“Java入门3第一章作业参考.rar”显然是针对初学者设计的,旨在帮助新手快速掌握Java的基础概念和编程技巧。 “Java入门3”可能指的是一个系列教程的第三部分,专注于Java编程的基础教学。第一章通常会介绍...
【完整课程列表】 完整版java基础入门教程由浅入深讲解 Java语言编程基础 第01章 java编程简介(共32页).ppt 完整版java基础入门教程由浅入深讲解 Java语言编程基础 第02章 ...第一课前言 学习java前的准备工作.ppt
Java是世界上最流行、最广泛应用的编程语言之一,尤其在企业级应用开发中占据主导地位。由Sun Microsystems在1995年推出,它的设计初衷是为了适应互联网时代的需求,提供一种安全、可移植并且跨平台的编程语言。Java...
在Java的第一章中,我们主要关注的是入门级别的概念和基础知识。 1. 平台无关性:这是Java最初获得全球认可的关键因素。Java软件可以在任何安装了Java运行环境(JRE)的平台上运行,因为JRE包含Java虚拟机(JVM)、...
第一章通常会介绍Java的历史和发展,以及它在软件开发中的重要地位。这包括Java的创始人、版本迭代和应用领域,让读者对Java有一个全面的认识。 第二章会讲解Java环境的搭建,包括安装Java Development Kit (JDK)、...
Java开发入门是编程学习的基础,本章节主要介绍了如何进行Java的上机实践,包括...理解并熟练掌握这些知识点,是成为一名合格Java程序员的第一步。通过不断的练习和实验,你可以逐步提高对Java语言的理解和应用能力。
2. **Java 开发工具入门**:如Eclipse、IntelliJ IDEA等集成开发环境(IDE)的使用,以及Java Development Kit (JDK)的安装和配置。 3. **Java 输入/输出**:讲解I/O流的概念,包括文件操作、网络通信等。 4. **流程...