[面试原题]面试
[题目] 什么是面向对象,Java语言面向对象有那些特色?编程
[正确答案]编程语言
博为峰小博老师:布局
面向对象是把构成问题事务分解成各个对象,创建对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。设计
例如五子棋,面向对象的设计则是从另外的思路来解决问题。整个五子棋能够分为 一、黑白双方,这两方的行为是如出一辙的,二、棋盘系统,负责绘制画面,三、规则系统,负责断定诸如犯规、输赢等。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的i变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行断定。code
能够明显地看出,面向对象是以功能来划分问题,而不是步骤。对象
功能上的统一保证了面向对象设计的可扩展性。好比我要加入悔棋的功能。只用改动棋盘对象就好了,棋盘系统保存了黑白双方的棋谱,简单回溯就能够了,而显示和规则判断则不用顾及,同时整个对对象功能的调用顺序都没有变化,改动只是局部的。继承
面向对象的编程语言的4个特色:接口
1.封装:事件
封装是面向对象编程的核心思想,将对象的属性和行为封装起来,而将对象的属性和行为封装起来的载体就是类,类一般对客户隐藏其实现细节,这就是封装的思想。例如,用户使用电脑,只须要使用手指敲击键盘就能够实现一些功能,用户无须知道电脑内部是如何工做的,即便用户可能碰巧知道电脑的工做原理,但在使用电脑时并不彻底依赖于电脑工做原理这些细节。
2.抽象:
抽象是从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征。例如苹果、香蕉、生梨、葡萄、桃子等,它们共同的特性就是水果。得出水果概念的过程,就是一个抽象的过程。
3.继承:
类与类之间一样具备关系,如一个百货公司类与销售员类相联系,类之间这种关系被称为关联。关联是描述两个类之间的通常二元关系,例如一个百货公司类与销售员类就是一个关联,再好比学生类以及教师类也是一个关联。两个类之间的关系有不少种,继承是关联中的一种。
4.多态:
多态性容许以统一的风格编写程序,以处理种类繁多的已存在的类以及相关类。该统一风格能够由父类来实现,根据父类统一风格的处理,就能够实例化子类的对象。因为整个事件的处理都只依赖于父类的方法,因此往后只要维护和调整父类的方法便可,这样下降了维护的难度,节省了时间。在提到多态的同时,不得不提到抽象类和接口,由于多态的实现并不依赖具体类,而是依赖于抽象类和接口。