`
run_wang
  • 浏览: 169514 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

java面向对象思想如何理解

阅读更多
Java 的核心是面向对象编程 . 所有的 java 程序都是面向对象的。

以前总听老师说 c 语言是面向过程的, c++ 和 java 是面向对象的,这些糊涂老师却从来不说明何为面向过程,何为面向对象,搞得我一直对此稀里糊涂。 最近看了不少的资料,在这里总结一下对此的心得体会。

所有的计算机程序都由两类元素组成:代码和数据。换句话说,程序还可以以它的代码或是数据为核心进行组织编写。也就是说,一些程序围绕 “ 正在发生什么 ” 编写,而另一些程序则围绕 “ 谁将被影响 ” 编写。第一种方法被称为面向过程 的模型( process-oriented model ),用它编写的程序都具有线性执行的特点。面向过程的模型可认为是代码作用于数据,像 C 这样的过程式语言采用这个模型是相当成功的。第二种方式,也就是面向对象 的编程( object-oriented programming )。面向对象的编程围绕它的数据(即对象)和为这个数据严格定义的接口来组织程序。面向对象的程序实际上是用数据控制对代码的访问。

这样说来很笼统,也很简单,下面具体说一下面向对象的编程思想。

面向对象编程的一个实质性的要素是抽象。那么何为抽象? 抽象与具体相对应。 人们不会把一台电脑想象成由几万个互相独立的部分所组成的一套装置,而是把电脑想成一个具有自己独特行为的对象。这种抽象使人们可以很容易地用电脑上网打游戏,而不会因组成电脑各部分零件过于复杂而不知所措。他们可以忽略内存、硬盘、 CPU 的工作细节,将电脑作为一个整体来加以利用。在面向对象的计算机世界中,这种细节程度就叫抽象。一个抽象的事物又可以把他细节化,例如一台汽车有音响系统,而音响系统由一台收音机、一个 CD 播放器、或许还有一台磁带放音机组成。我们可以这样归纳,在现实生活中,为了减少必须处理的事情,我们是在某一程度的细节中生活的,这中细节程度叫抽象 。这种细节是相对的,没有绝对的抽象也没有绝对的具体正如前面所说,抽象与具体是相对应的概念(有点像相对论了 ~~ )所以我们可以通过层级抽象对复杂的汽车(或任何另外复杂的系统)进行管理。(我们现在开始用这段话来承上启下了)

复杂系统的分层抽象也能被用于计算机程序设计。传统的面向过程程序的数据经过抽象可用若干个组成对象表示,程序中的过程步骤可看成是在这些对象之间进行消息收集。这样,每一个对象都有它自己的独特行为特征。你可以把这些对象当作具体的实体,让它们对告诉它们做什么事的消息作出反应。这是面向对象编程的本质。

面向对象的概念是 Java 的核心,当然了对程序员来讲,重要的是要理解这些概念怎么转化为程序。我想任何软件都不可避免地要经历概念提出、成长、衰老这样一个生命周期,而面向对象的程序设计,可以使软件在生命周期的每一个阶段都处变不惊,有足够的应变能力。
所有面向对象的编程语言都提供帮助你实现面向对象模型的机制,这些机制是封装,继承及多态性。现在让我们来看一下它们的概念。

封装
封装( Encapsulation )是将代码及其处理的数据绑定在一起的一种编程机制,该机制保证了程序和数据都不受外部干扰且不被误用。封装代码的好处是每个人都知道怎么访问它,但却不必考虑它的内部实现细节,也不必害怕使用不当会带来负面影响。 Java 封装的基本单元是类。一个类( class )定义了将被一个对象集共享的结构和行为(数据和代码)。一个给定类的每个对象都包含这个类定义的行为和结构,好像它们是从同一个类的模子中铸造出来似的。因为这个原因,对象有时被看作是类的实例。所以,类是一种逻辑结构,而对象是真正存在的物理实体。 当创建一个类时,你要指定组成那个类的代码和数据。从总体上讲,这些元素都被称为该类的成员( members )。具体地说,类定义的数据称为成员变量或实例变量。操作数据的代码称为成员方法( member methods )或简称方法( methods )。 Java 程序员所称的方法,就是 C/C++ 程序员所称的函数( function )。在完全用 Java 编写的程序中,方法定义如何使用成员变量。 既然类的目的是封装复杂性,在类的内部就应该有隐藏实现复杂性机制。类中的每个方法或变量都可以被标记为私有( private )或公共( public )。类的公共接口代表类的外部用户需要知道或可以知道的每件事情;私有方法和数据仅能被一个类的成员代码所访问,其他任何不是类的成员的代码都不能访问私有的方法或变量。既然类的私有成员仅能被程序中的其他部分通过该类的公共方法访问,那么就能保证不希望发生的事情就一定不会发生。当然,公共接口应该小心仔细设计,不要过多暴露类的内部内容。
继承
继承( Inheritance )是一个对象获得另一个对象的属性的过程。继承很重要,因为它支持了按层分类的概念。如前面提到的,大多数知识都可以按层级(即从上到下)分类管理。使用了继承,一个对象就只需定义使它在所属类中独一无二的属性即可,因为它可以从它的父类那儿继承所有的通用属性。所以,可以这样说,正是继承机制使一个对象成为一个更具通用类的一个特定实例成为可能。 我们可以举例来说,动物——哺乳动物——兔子这是一个层级结构。我们说哺乳类动物是动物的子类( subclass ),而动物是哺乳动物的超类( super class )。 由于哺乳动物类是需要更加精确定义的动物,所以它可以从动物类继承所有的属性。一个深度继承的子类继承了类层级中它的每个祖先的所有属性。 继承性与封装性相互作用。如果一个给定的类封装了一些属性,那么它的任何子类将具有同样的属性,而且还添加了子类自己特有的属性。这是面向对象的程序在复杂性上呈线性而非几何性增长的一个关键概念。新的子类继承它的所有祖先的所有属性。它不与系统中其余的多数代码产生无法预料的相互作用。
多态性
多态性是允许一个接口被多个同类动作使用的特性,具体使用哪个动作与应用场合有关,下面我们以一个后进先出型堆栈为例进行说明。假设你有一个程序,需要 3 种不同类型的堆栈。一个堆栈用于整数值,一个用于浮点数值,一个用于字符。尽管堆栈中存储的数据类型不同,但实现每个栈的算法是一样的。如果用一种非面向对象的语言,你就要创建 3 个不同的堆栈程序,每个程序一个名字。但是,如果使用 Java ,由于它具有多态性,你就可以创建一个通用的堆栈程序集,它们共享相同的名称。 多态性的概念经常被说成是 “ 一个接口,多种方法 ” 。这意味着可以为一组相关的动作设计一个通用的接口。多态性允许同一个接口被同一类的多个动作使用,这样就降低了程序的复杂性。选择应用于每一种情形的特定的动作 , 是编译器的任务,程序员无需手工进行选择。我们只需记住并且使用通用接口即可。
多态性、封装性与继承性相互作用
如果用得当,在由多态性、封装性和继承性共同组成的编程环境中可以写出比面向过程模型环境更健壮、扩展性更好的程序。精心设计的类层级结构是重用你花时间和努力改进并测试过的程序的基础,封装可以使你在不破坏依赖于类公共接口的代码基础上对程序进行升级迁移,多态性则有助于你编写清楚、易懂、易读、易修改的程序。 所有的 Java 程序都是面向对象的。或者,更精确地说,每个 Java 程序都具有封装性、继承性及多态性。你将看到, Java 提供的许多特性是它的内置类库的一部分,这个库使封装性、继承性及多态性得到更广泛应用。
分享到:
评论

相关推荐

    Java面向对象思想与程序设计(刘彦君版)电子笔记,附上部分源码

    Java面向对象思想与程序设计电子笔记(刘彦君版),帮助Java学习者从入门走向精通。这是个很高的目标,非常具有挑战性,本笔记就是融合初学者学习的困难,将抽象困难理解的Java入门变得简单易懂,方便初学者跨入Java...

    Java面向对象编程思想.pdf

    Java面向对象编程思想 Java 面向对象编程思想是 Java 编程语言的核心思想之一,通过封装、继承和多态三个特征,实现代码的重用和可维护性。 一、封装 封装是 Java 面向对象编程的三大特征之一,通过 Java 的类来...

    1.java学习面向对象思想.zip

    1.java学习面向对象思想.zip1.java学习面向对象思想.zip1.java学习面向对象思想.zip1.java学习面向对象思想.zip1.java学习面向对象思想.zip1.java学习面向对象思想.zip1.java学习面向对象思想.zip1.java学习面向对象...

    java面向对象编程源码

    本书内容由浅入深,紧密结合实际,利用大量典型实例,详细讲解Java面向对象的编程思想、编程语法和设计模式,介绍常见Java类库的用法,总结优化 Java编程的各种宝贵经验,深入阐述Java虚拟机执行Java程序的原理。...

    Java面向对象程序设计+源代码+课后习题答案)

    这本书"Java面向对象程序设计"由耿祥义和张跃平编著,由清华大学出版社出版,提供了深入的理论讲解以及丰富的实践案例,帮助读者理解和掌握Java的面向对象编程技术。 1. 类与对象:类是创建对象的模板或蓝图,定义...

    java 面向对象设计思想

    java面向对象设计思想编程的知识点,北大青鸟教学课程

    Java面向对象程序设计

    Java面向对象程序设计是计算机编程领域中的核心主题,它基于面向对象编程(OOP)理念,使得代码更具有模块化、可复用性和易于维护的特点。以下是对标题和描述中涉及的知识点的详细阐述: 1. **第1章:Java入门** -...

    JAVA面向对象编程思想

    ### JAVA面向对象编程思想 #### 一、面向对象的基本概念 面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它通过模拟现实世界中的对象及其交互方式来构建软件系统。Java作为一种典型的面向...

    Java面向对象程序设计课后答案全解

    学习如何创建和使用类及对象,是理解Java面向对象编程的关键。 2. **封装**:封装是面向对象的核心特性之一,它隐藏了对象内部的实现细节,只对外提供公共接口进行交互。通过访问修饰符(public, private, ...

    Java面向对象编程思想

    Java 的核心是面向对象编程.所有的java程序都是面向对象的。 以前总听老师说c语言是面向过程的,c++和java是面向对象的,这些糊涂老师却从来不说明何为面向过程,何为面向对象,搞得我一直对此稀里糊涂。 最近看了...

    Java面向对象思想与程序设计-PPT.zip

    在本教学资料"Java面向对象思想与程序设计-PPT.zip"中,我们可以通过PPT来深入理解这些概念。 1. **类与对象**:在Java中,类是对象的蓝图,定义了对象的状态(数据成员或属性)和行为(方法)。对象是类的实例,...

    java面向对象思想实现贪吃蛇小程序

    本项目以“java面向对象思想实现贪吃蛇小程序”为主题,旨在通过实践讲解如何运用面向对象编程的思想来构建一个简单但有趣的游戏。下面将详细阐述这个项目中涉及的核心知识点。 1. **面向对象编程(OOP)基础**: ...

    Java面向对象精髓编程

    Java面向对象精髓编程是Java开发的核心概念,它涵盖了类、对象、封装、继承、多态等关键要素。本文将深入探讨这些概念,并结合实际案例,帮助初学者从零开始掌握Java编程。 首先,我们从“Hello, World!”开始。这...

    Java面向对象思想的排序方法

    在Java编程语言中,面向对象思想是核心设计原则之一,它包括封装、继承和多态三个主要特性。本文将深入探讨如何运用面向对象思想来实现排序方法,这其中包括了多种不同的排序算法,如冒泡排序、选择排序、插入排序、...

    Java面向对象吃货联盟项目 (HashMap)

    根据Java面向对象吃货联盟项目修改为通过HashMap存储菜品和订单(其实ArrayList更简单) 实现的功能:订餐,查看餐袋,签收订单,删除订单,我要点赞,退出系统 定义的类:菜品类、订单类、测试类(可以把里面实现的...

    Java面向对象基础练习题

    通过对上述练习题的分析,我们可以加深对Java面向对象编程中类和对象、实例变量、方法重载、构造方法、引用和this关键字的理解和应用。这些知识点对于日后进一步学习面向对象的高级特性,比如继承和多态,打下了坚实...

    《Java面向对象程序设计(第2版)》课件

    第二版的《Java面向对象程序设计》课件旨在深入浅出地介绍这一关键概念,帮助学习者掌握Java语言的基础以及面向对象编程的核心思想。下面将详细阐述Java面向对象编程的基本概念、特性及其在实际开发中的应用。 1. ...

    理解Java面向对象的程序设计思想

    ### 理解Java面向对象的程序设计思想 #### 一、引言 面向对象的程序设计(Object-Oriented Programming, OOP)是现代软件工程中最常用的编程范式之一,尤其是在Java这样的语言中尤为突出。OOP的核心理念是通过抽象...

    Java面向对象程序设计(第3版)-PPT课件

    《Java面向对象程序设计(第3版)》是人民邮电出版社出版的一部经典教材,由杨晓燕和李选平两位专家共同编著。...在学习过程中,配合书籍和实践,能够更好地理解和掌握Java面向对象编程的设计思想和技巧。

    Java面向对象思想

    ### Java面向对象思想详解 #### 一、Java面向对象的核心概念 **1.1 类与对象** 在Java中,类(Class)是一个模板,用来定义一组具有相同特征(属性)和行为(方法)的对象。对象(Object)是类的具体实例,每一个...

Global site tag (gtag.js) - Google Analytics