Java春招面试题:Java面向对象的特征有哪些?

面向对象程序设计(Object-Oriented Programming,以下简称OOP)起源于20 世纪60年代的Simula语言,是一种发展已经将近30年的程序设计思想。其自身理论已经十分完善,并被多种面向对象程序设计语言(Object-Oriented Programming Language,以下简称OOPL)实现。如果把UNIX系统看成是国外在系统软件方面的文化根基,那么Smalltalk语言无疑在OOPL领域和UNIX持有相同地位。

OOP的许多原始思想都来自于Simula语言,并在Smalltalk语言的完善和标准化过程中得到更多的扩展和对以前的思想的重新注解。可以说OO思想和OOPL几乎是同步发展、相互促进的。与函数式程序设计(functional-programming)和逻辑式程序设计(logic-programming)所代表的接近于机器的实际计算模型所不同的是,OOP几乎没有引入精确的数学描述,而是倾向于建立一个对象模型,它能够近似地反映应用领域内的实体之间的关系,其本质是更接近于一种人类认知事物所采用的哲学观的计算模型。在OOP中,对象作为计算主体,拥有自己的名称、状态以及接收外界消息的接口。在对象模型中,产生新对象、旧对象销毁、发送消息、响应消息就构成OOP计算模型的根本。

对象的产生有两种基本方式:一种是以原型(prototype)对象为基础产生新的对象;一种是以类(class)为基础产生新对象。

原型的概念已经在认知心理学中被用来解释概念学习的递增特性,原型模型本身就是企图通过提供一个有代表性的对象为基础来产生各种新的对象,并由此继续产生更符合实际应用的对象。而原型-委托也是OOP中的对象抽象,是代码共享机制中的一种。
一个类提供了一个或者多个对象的通用性描述。从形式化的观点看,类与类型有关,因此一个类相当于是从该类中产生的实例的集合。而这样的观点也会带来一些矛盾,比较典型的就是在继承体系下,子集(子类)对象和父集(父类)对象之间的行为相融性可能很难达到,这也就是 OOP 中常被引用的子类型(subtype),不等于子类(subclass)。而在一种所有皆对象的世界观背景下,在类模型基础上还诞生出了一种拥有元类(metaclass)的新对象模型。即类本身也是一种其他类的对象。

以上3种根本不同的观点各自定义了3种基于类(class-based)、基于原型(prototype-based)和基于元类(metaclass-based)的对象模型。而这3种对象模型也就导致了许多不同的程序设计语言(如果暂时把静态与动态的差别放在一边)。读者经常接触的C++、Java都是使用基于类的对象模型。

求职者如何理解OOP设计思想、继承及接口等,是面试中常见的考查内容。读者必须掌握如下的知识点。

理解面向对象的特征。

掌握面向对象设计的几个原则。

理解Java 类的继承,能够区分是一个(is a)和有一个(has a)关系。

理解方法重载和方法覆盖,以及两者的区别。

掌握构造函数,重点理解构造函数的执行过程。

区分super 和this 的用法和含义。

面试题1 请说出面向对象的特征有哪些

考点:该试题重点考察求职者对面向对象的理解,答题时把握几个重要的特征即可。

出现频率:★★★★★

考题解析

本题需要求职者说出面向对象的特征。面向对象是一种设计思想,大体上有如下 4个特征:抽象、继承、封装和多态性。求职者只要把握这几个基本特征,并进行具体描述即可。

参考答案

抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,而将目标的某个特征进行提炼。抽象并不需要了解全部问题,而只是选择其中的一部分。抽象包括两个方面:过程抽象和数据抽象。

继承:继承是一种联结类的层次模型,它提供了一种明确表述共性的方法,并且允许和鼓励类的方法重用。新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且可以修改或增加新的方法,使之更适合特殊的需要。

封装:封装把过程和数据包围起来,对数据的访问只能通过调用已定义的接口。面向对象始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。

多态性:多态性允许不同类的对象对同一消息做出响应。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好地解决了应用程序的函数同名问题。

以上内容来自面试的书籍《Java程序员面试秘笈》

Java春招面试题:Java面向对象的特征有哪些?

此书已加入到VIP会员卡,只要购买VIP会员卡即可免费阅读上百本电子书,这张VIP卡除了免费让你读书,还有更多的权益等你来领,往下↓拉
Java春招面试题:Java面向对象的特征有哪些?

阅读电子书的方法如下:

打开CSDN APP(软件商城搜索“CSDN”即可找到哦)—>登录CSDN账号—>学习—>电子书

Java春招面试题:Java面向对象的特征有哪些?