`

面向对象的特征有哪些方面?

    博客分类:
  • Java
 
阅读更多

计算机软件系统是现实生活中的业务在计算机中的映射,而现实生活中的业务其实就是一个个对象协作的过程。面向对象编程就是按现实业务一样的方式将程序代码 按一个个对象进行组织和编写,让计算机系统能够识别和理解用对象方式组织和编写的程序代码,这样就可以把现实生活中的业务对象映射到计算机系统中。
 面向对象的编程语言有封装、继承 、抽象、多态等4个主要的特征。
 1封装:
 封装是保证软件部件具有优良的模块性的基础,封装的目标就是要实现软件部件的“高内聚、低耦合”,防止程序相互依赖性而带来的变动影响。在面向对象的编 程语言中,对象是封装的最基本单位,面向对象的封装比传统语言的封装更为清晰、更为有力。面向对象的封装就是把描述一个对象的属性和行为的代码封装在一个 “模块”中,也就是一个类中,属性用变量定义,行为用方法进行定义,方法可以直接访问同一个对象中的属性。通常情况下,只要记住让变量和访问这个变量的方 法放在一起,将一个类中的成员变量全部定义成私有的,只有这个类自己的方法才可以访问到这些成员变量,这就基本上实现对象的封装,就很容易找出要分配到这 个类上的方法了,就基本上算是会面向对象的编程了。把握一个原则:把对同一事物进行操作的方法和相关的方法放在同一个类中,把方法和它操作的数据放在同一 个类中。
 例如,人要在黑板上画圆,这一共涉及三个对象:人、黑板、圆,画圆的方法要分配给哪个对象呢?由于画圆需要使用到圆心和半径,圆心和半径显然是圆的属 性,如果将它们在类中定义成了私有的成员变量,那么,画圆的方法必须分配给圆,它才能访问到圆心和半径这两个属性,人以后只是调用圆的画圆方法、表示给圆 发给消息而已,画圆这个方法不应该分配在人这个对象上,这就是面向对象的封装性,即将对象封装成一个高度自治和相对封闭的个体,对象状态(属性)由这个对 象自己的行为(方法)来读取和改变。一个更便于理解的例子就是,司机将火车刹住了,刹车的动作是分配给司机,还是分配给火车,显然,应该分配给火车,因为 司机自身是不可能有那么大的力气将一个火车给停下来的,只有火车自己才能完成这一动作,火车需要调用内部的离合器和刹车片等多个器件协作才能完成刹车这个 动作,司机刹车的过程只是给火车发了一个消息,通知火车要执行刹车动作而已。
 
 抽象:
 抽象就是找出一些事物的相似和共性之处,然后将这些事物归为一个类,这个类只考虑这些事物的相似和共性之处,并且会忽略与当前主题和目标无关的那些方 面,将注意力集中在与当前目标有关的方面。例如,看到一只蚂蚁和大象,你能够想象出它们的相同之处,那就是抽象。抽象包括行为抽象和状态抽象两个方面。例 如,定义一个Person类,如下:
 class Person{
   String name;
   int age;
 }
 人本来是很复杂的事物,有很多方面,但因为当前系统只需要了解人的姓名和年龄,所以上面定义的类中只包含姓名和年龄这两个属性,这就是一种抽像,使用抽 象可以避免考虑一些与目标无关的细节。我对抽象的理解就是不要用显微镜去看一个事物的所有方面,这样涉及的内容就太多了,而是要善于划分问题的边界,当前 系统需要什么,就只考虑什么。
 
 继承:
 在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并可以加入若干新的内容,或修改 原来的方法使之更适合特殊的需要,这就是继承。继承是子类自动共享父类数据和方法的机制,这是类之间的一种关系,提高了软件的可重用性和可扩展性。
 
 多态:
 多态是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向 哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改 源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代 码,让程序可以选择多个运行状态,这就是多态性。多态性增强了软件的灵活性和扩展性。例如,下面代码中的UserDao是一个接口,它定义引用变量 userDao指向的实例对象由daofactory.getDao()在执行的时候返回,有时候指向的是UserJdbcDao这个实现,有时候指向的 是UserHibernateDao这个实现,这样,不用修改源代码,就可以改变userDao指向的具体类实现,从而导致 userDao.insertUser()方法调用的具体代码也随之改变,即有时候调用的是UserJdbcDao的insertUser方法,有时候调 用的是UserHibernateDao的insertUser方法:
 UserDao userDao = daofactory.getDao(); 
 userDao.insertUser(user);

分享到:
评论

相关推荐

    JAVA面向对象的特征有哪些方面

    面向对象的特征有哪些方面文档介绍

    面向对象的特征有哪些方面

    JAVASE 基础 oop思想基础 JSP基础

    JavaScript程序设计课件:面向对象概述.pptx

    面向对象有封装、继承、多态性的特性,所以具有易维护、易复用、易扩展的特点。 类的调用需要实例化,开销较大,因此性能方面较面向过程低。 6.1.1 面向过程与面向对象 6.1 面向对象概述 主讲:重庆机电职业技术大学...

    Java面试题-面向对象、多线程.pdf

    1、面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: - 抽象:抽象是将一类对象的共同特征总结出来构造类的过程, 包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为, 并不...

    2020最新BAT java经典必考面试题.pdf

    1、面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: 1)抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和 行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些...

    《C--面向对象程序设计》习题与上机解答-提交稿-陈维兴

    对于面向对象的程序设计,程序员注重的是类的设计和编写,即问题域中涉及几个类,各个类之间的关系如何,每个类包含哪些数据和函数(操作代码),再由类生成其对象。程序中的一切操作都是通过向对象发送消息来实现的...

    java学习资料

    java基础总结:面试常见问题,面向对象的特征有哪些方面?等等。

    每天十道面试题(第一天)

    文章目录1、面向对象的特征有哪些方面?2、public,private,protected修饰符的作用域,以及不写修饰符时的区别?3、String是最基本的数据类型吗?4、float型float f=3.4是否正确?5、语句float f=1.3;编译能否通过?6...

    最全面Java面试题,从corejava到javaWeb共180多题(含答案)

    1、面向对象的特征有哪些方面? 【基础】2、作用域public,private,protected,以及不写时的区别?3、String 是最基本的数据类型吗? 【基础】11、heap 和stack 有什么区别?【基础】12、Math.round(11.5) 等于多少? ...

    java面试题

    1、面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: - 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关。。。...

    125道经典JAVA面试题

    面向对象的特征有哪些方面?运行时异常与一般异常有何异同?简述synchronized和java.util.concurrent.locks.Lock的异同?等等面试题。。。。。

    跟我学Java面向对象程序设计技术及应用——Java中的面向对象技术(第1部分).pdf

    3) 你知道 java 语言在面向对象编程方面有何独特的特点吗? 1.1.1 面向对象技术基础 1、面向对象(OO)的基本概念 (1)面向对象的基本思想 面向对象是一种新兴的程序设计方法,或者是一种新的程序设计规范...

    一种面向对象的遥感影像多尺度分割方法

    高分辨率遥感影像中丰富的空间结构信息和地理特征信息提取需要在多种不同的尺度下进行,而传统的基于像素光谱特征的影像分割和单尺度影像信息提取方法在这方面存在明显的缺陷.基于区域的面向对象影像分析方法,为高...

    JAVA面试宝典

    示例 1 : 面向对象的特征有哪些方面? 示例 2 : String是最基本的数据类型吗? 示例 3 : int 和 Integer 有什么区别? 示例 4 : String 和StringBuffer的区别? 示例 5 : 运行时异常与一般异常有何异同?

    JAVA核心面试知识整理.zip

    【美团】Java 岗 154 道面试题;2020最新BAT java经典必考面试题;JAVA核心面试知识整理;整理的多家公司常见面试题库350道;面向对象的特征有哪些方面?

    JAVA面试宝典.doc

    1.面向对象的特征有哪些方面? 2、String是最基本的数据类型吗? 3、int 和 Integer 有什么区别? 4.说出Servlet的生命周期,并说出Servlet和CGI的区别? ......

    java面试基础整理

    Java面试基础知识整理 1、 面向对象的特征有哪些方面? 2、访问修饰符public,private,protected,以及不写(默认)时的区别? 3、String 是最基本的数据类型吗? 等等...

    java面试题.zip

    1、面向对象的特征有哪些方面? 【基础】 答:面向对象的特征主要有以下几个方面: 1)抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而...

    JavaEE基础面试题.docx

    面向对象的特征有哪些方面? 【基础】 答:面向对象的特征主要有以下几个方面: 1)抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是...

Global site tag (gtag.js) - Google Analytics