JAVA基础——如何理解面向对象
2017-08-29 19:29
148 查看
这是在java面试中很容易遇到的问题,即使工作几年。在应聘java岗位时,你的上级对象依然有可能问到这个问题。
遇到这类问题,切莫心慌。一切从最基本的原理说起。下文有自己从业来的理解,也有摘录网友们的热心回答。
编程语言大致可以分为两类 :
一 面向过程 如汇编 C语言等(这里就不过多描述面向过程,可百度百科)
二 面向对象 如C++ JAVA PHP c#等
面向对象的四个基本特征
封装 继承 抽象 多态
封装:
封装是使软件部件具有优良模块化的基础,封装的目的是使软件具有“高内聚,低耦合”的特性,防止程序间相互依赖带来的变动性影响。面向对象的封装,属性用变量定义,行为用方法定义,方法可以直接方位对象中的一个属性。
例如:
人开车,人需要将车发动起来,然后开动起来。我们应该以人为对象将车放进来么,不是,我们需要封装一个车的对象,里面包括车的属性。同时在车这个对象里,提供一个启动的方法,将车的状态“发动”起来。
这就是面向对象的封装性,即将对象封装成一个高度自治和相对封闭的个体,对象状态(属性)由这个对象自己的行为(方法)来读取和改变。
继承:
在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并可以加入若干新的内容,或修改原来的方法使之更适合特殊的需要,这就是继承。继承是子类自动共享父类数据和方法的机制,这是类之间的一种关系,提高了软件的可重用性和可扩展性。
多态:
所谓多态就是指一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。
抽象:
抽象就是找出一些事物的相似和共性之处,然后将这些事物归为一个类,这个类只考虑这些事物的相似和共性之处,并且会忽略与当前主题和目标无关的那些方面,将注意力集中在与当前目标有关的方面。例如,看到一只蚂蚁和大象,你能够想象出它们的相同之处,那就是抽象。抽象包括行为抽象和状态抽象两个方面。例如,定义一个Person类,如下:
人本来是很复杂的事物,有很多方面,但因为当前系统只需要了解人的姓名和年龄,所以上面定义的类中只包含姓名和年龄这两个属性,这就是一种抽像,使用抽象可以避免考虑一些与目标无关的细节。我对抽象的理解就是不要用显微镜去看一个事物的所有方面,这样涉及的内容就太多了,而是要善于划分问题的边界,当前系统需要什么,就只考虑什么。
遇到这类问题,切莫心慌。一切从最基本的原理说起。下文有自己从业来的理解,也有摘录网友们的热心回答。
编程语言大致可以分为两类 :
一 面向过程 如汇编 C语言等(这里就不过多描述面向过程,可百度百科)
二 面向对象 如C++ JAVA PHP c#等
面向对象的四个基本特征
封装 继承 抽象 多态
封装:
封装是使软件部件具有优良模块化的基础,封装的目的是使软件具有“高内聚,低耦合”的特性,防止程序间相互依赖带来的变动性影响。面向对象的封装,属性用变量定义,行为用方法定义,方法可以直接方位对象中的一个属性。
例如:
人开车,人需要将车发动起来,然后开动起来。我们应该以人为对象将车放进来么,不是,我们需要封装一个车的对象,里面包括车的属性。同时在车这个对象里,提供一个启动的方法,将车的状态“发动”起来。
这就是面向对象的封装性,即将对象封装成一个高度自治和相对封闭的个体,对象状态(属性)由这个对象自己的行为(方法)来读取和改变。
继承:
在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并可以加入若干新的内容,或修改原来的方法使之更适合特殊的需要,这就是继承。继承是子类自动共享父类数据和方法的机制,这是类之间的一种关系,提高了软件的可重用性和可扩展性。
多态:
所谓多态就是指一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。
抽象:
抽象就是找出一些事物的相似和共性之处,然后将这些事物归为一个类,这个类只考虑这些事物的相似和共性之处,并且会忽略与当前主题和目标无关的那些方面,将注意力集中在与当前目标有关的方面。例如,看到一只蚂蚁和大象,你能够想象出它们的相同之处,那就是抽象。抽象包括行为抽象和状态抽象两个方面。例如,定义一个Person类,如下:
classPerson{ String name; int age; }
人本来是很复杂的事物,有很多方面,但因为当前系统只需要了解人的姓名和年龄,所以上面定义的类中只包含姓名和年龄这两个属性,这就是一种抽像,使用抽象可以避免考虑一些与目标无关的细节。我对抽象的理解就是不要用显微镜去看一个事物的所有方面,这样涉及的内容就太多了,而是要善于划分问题的边界,当前系统需要什么,就只考虑什么。
相关文章推荐
- Java基础(面向对象一——理解、匿名函数、封装、构造函数和this关键字的使用)
- java面向对象,什么是对象,什么是类,如何理解,怎么使用
- 黑马程序员-Java基础知识预备之Java面向对象的理解(part2)
- 【JAVA基础】如何通俗的理解多线程
- 如何理解Java面向对象的多态
- 蜂窝教育:教你如何理解Java面向对象
- Java 学习基础第二章之理解面向对象
- java基础(四)探探对面向对象三大特征之一 ——继承的理解
- 黑马程序员——Java基础之面向对象的相关概念及个人理解
- java基础(三)探探对面向对象三大特征之一 ——多态 的理解
- 【JAVA-基础】—理解面向对象
- java基础之抽象 (通过教师资格证考核模拟现实,理解面向对象和抽象)
- 黑马程序员——Java基础---深入理解面向对象(封装继承和多态)
- java入门、java学习:如何理解Java面向对象
- 关于初学者如何理解面向对象和面向过程的区别以及java中的类和对象
- Java基础笔记之理解面向对象
- 从java基础加深对面向对象的理解·
- 黑马程序员-Java基础知识预备之Java面向对象的理解(part1)
- java基础:javascript面向对象的支持(2)
- 高手是如何轻松玩转Java Web Start的-Java基础-Java-编程开发