热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

面向对象程序设计(Object-OrientedProgramming,以下简称OOP)起源于20世纪60年代的Simula语言,是一种发展已经将近30
ef4068266f76878c2d37ecbe580a3bd2.gif2c3152a2594f756bb7c6393cc6863852.png面向对象程序设计(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 的用法和含义。01面试题1  请说出面向对象的特征有哪些考点:该试题重点考察求职者对面向对象的理解,答题时把握几个重要的特征即可。出现频率:★★★★★考题解析:本题需要求职者说出面向对象的特征。面向对象是一种设计思想,大体上有如下 4个特征:抽象、继承、封装和多态性。求职者只要把握这几个基本特征,并进行具体描述即可。参考答案:抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,而将目标的某个特征进行提炼。抽象并不需要了解全部问题,而只是选择其中的一部分。抽象包括两个方面:过程抽象和数据抽象。继承:继承是一种联结类的层次模型,它提供了一种明确表述共性的方法,并且允许和鼓励类的方法重用。新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且可以修改或增加新的方法,使之更适合特殊的需要。封装:封装把过程和数据包围起来,对数据的访问只能通过调用已定义的接口。面向对象始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。多态性:多态性允许不同类的对象对同一消息做出响应。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好地解决了应用程序的函数同名问题。以上内容来自面试的书籍《Java程序员面试秘笈》13d93ad4c47854689f070f67a785a95d.png此书已加入到VIP会员卡,只要购买VIP会员卡即可免费阅读上百本电子书,这张VIP卡除了免费让你读书,还有更多的权益等你来领!【end】899225ddab8719985cbad40664712f3e.png若想咨询更多电子书或者视频的也可加入交流群哦~添加小姐姐微信 备注码书746ff52484ed863e6d291b3c32c10dd5.pngba1d560ec5767f7162269b8d7fb67605.gif



推荐阅读
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • JavaScript设计模式之策略模式(Strategy Pattern)的优势及应用
    本文介绍了JavaScript设计模式之策略模式(Strategy Pattern)的定义和优势,策略模式可以避免代码中的多重判断条件,体现了开放-封闭原则。同时,策略模式的应用可以使系统的算法重复利用,避免复制粘贴。然而,策略模式也会增加策略类的数量,违反最少知识原则,需要了解各种策略类才能更好地应用于业务中。本文还以员工年终奖的计算为例,说明了策略模式的应用场景和实现方式。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
author-avatar
欣荣_75229
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有