- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java 程序员面试宝典(重点有标记 推荐初级学者认真看最后一道面试题 我几回笔试都看到了类此的 必考题哦)
面向对象
面向对象其实是现实世界模型的自然延伸。现实世界中任何实体都可以看做是对象。对
象之间通过消息相互作用。另外,现实世界中任何实体都可归属于某类事物,任何对象
都是某一类事物的实例。如果说传统的过程式编程语言是以过程为中心、以算法为驱动
的话,面向对象的编程语言则是以对象为中心,以消息为驱动。用公式表示,过程式编
程语言为:程序=算法+数据;面向对象编程语言为:程序=对象+消息。
所有面向对象编程语言都支持 3 个概念,即封装、多态性和继承,Java 也不例外。现实
世界中的对象均有属性和行为,映射到计算机程序上,属性则表示对象的数据,行为表
示对象的方法(其作用是处理数据或同外界交互)。所谓封装,就是用一个自主式框架
把对象的数据和方法连在一起形成一个整体。可以说,对象是支持封装的手段,是封装
的基本单位。Java 语言的封装性较强,因为 Java 无全程变量,无主函数,在 Java 中绝大
部分成员是对象,只有简单的数字类型、字符类型和布尔类型除外。而对于这些类型,Java
也提供了相应的对象类型以便与其他对象交互操作。
“这个世界是由什么组成的?”这个问题如果让不同的人来回答会得到不同的答案。如果是
一个化学家,他也许会告诉你:“还用问吗?这个世界是由分子、原子、离子等化学物质
组成的” 。如果是一个画家,他也许会告诉你:“这个世界是由不同的颜色所组成的” 。但
如果让一个分类学家来考虑问题就有趣多了,他会告诉你:“这个世界是由不同类型的物
与事所构成的” 。好!作为面向对象的程序员,我们要从分类学家的角度去考虑问题!是
的,这个世界是由动物、植物等组成的。动物又分为单细胞动物、多细胞动物、哺乳动
物等,哺乳动物又分为人、大象、老虎……就这样分下去了!
现在,从抽象的角度,我们给“类”下个定义吧!我的意思是,从抽象的角度,你回答我“什
么是人类?”首先让我们来看看人类所具有的一些特征,这个特征包括属性(一些参数、
数值)及方法(一些行为,他能干什么)。每个人都有身高、体重、年龄、血型等一些
属性。还有人会劳动、人都会直立行走、人都会用自己的头脑去创造工具等方法。人之
所以能区别于其他类型的动物,是因为每个人都具有人这个群体的属性与方法。“人类”
只是一个抽象的概念,它仅仅是一个概念,它是不存在的实体。但是所有具备“人类”这个
群体的属性与方法的对象都叫人。这个对象“人”是实际存在的实体。每个人都是人这个群
体的一个对象。老虎为什么不是人?因为它不具备人这个群体的属性与方法,老虎不会
直立行走,不会使用工具等,所以说老虎不是人。
由此可见,类描述了一组有相同特性(属性)和相同行为(方法)的对象。在程序中,
类实际上就是数据类型,例如,整数、小数等。整数也有一组特性和行为。面向过程的
语言与面向对象的语言的区别就在于,面向过程的语言不允许程序员自己定义数据类型,
而只能使用程序中内置的数据类型。而为了模拟真实世界,为了更好地解决问题,我们
需往往要创建解决问题所必需的数据类型。
面向对象编程为我们提供了解决方案。以下的考题来自真实的笔试资料,希望读者先不
要看答案,自我解答后再与答案加以比对,找出自己的不足。
11.1 面向对象的基本概念
面试例题 1:对象与实例有什么区别?
解析:在 Java 的内存分配中,对象和实例是不同的,前者分配在内存堆里,后者分配在
堆栈里,至于为什么要这样分,参考一下其他的资料。对象是不变的东西,它是对客观
事物的抽象,实例是对操作对象的引用,你不能直接操作对象。
答案:对象和实例从宏观的角度看,区别是:对象是同类事物的一种抽象表现形式,而实
例是对象的具体化,一个对象可以实例化很多实例,对象就是一个模型,实例是照着这
个模型生产的最终产品。实际上就是这样,一个对象可以实例化 N 个实例。就像根据一
个模型可以制造多个实际的产品一样。
从内存分配的角度来看,对象是保存在堆中的,而实例是存储在栈中的,实例其实只是
对象的一个引用,也就是指向对象的指针。
面试例题 2 :Java 中所有的类都继承了java.lang.Object 类,而在 C++ 中没有像java.lang.Object
这样的类,这是为什么呢?都是面向对象,Java 这样做有什么好处呢?
解析:Java 采用的是单根结构,所有的类都继承了java.lang.Object 类。对于 Java 这种纯
面向对象的语言来说,这种设计具有很好的灵活性,比如对垃圾收集来说很有利,所有
的类都具有java
原创力文档


文档评论(0)