Java核心面试宝典Day10面向对象常见面试题汇总
Posted 灰小猿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java核心面试宝典Day10面向对象常见面试题汇总相关的知识,希望对你有一定的参考价值。
Hello,你好呀,我是
灰小猿
!一个超会写bug的程序猿!、
用坚持缔造技术、用指尖敲动未来!
和很多小伙伴们一样,我也是一名奔波在Java道路上的“创造者
”。也想靠技术来改未来,改变世界!因为我们坚信每一次敲动键盘都能让生活变得更智能、世界变得更有趣
!
在此专栏《Java核心面试宝典》记录我们备战梦想的【day 10】
!
面向对象的方面的相关面试题也和大家总结了好几天了,把其中的内容分成了好几个板块和知识点,今天就来继续和大家分享最后的一部分,
1、聚集关系和组合关系有什么区别?
聚集关系
描述两个对象之间的所属关系,模拟具有(has-a)
关系,一个对象可以被几个聚集对象所拥有;
如果一个对象被一个聚集对象所专有,该对象和聚合对象之间称为组合
。
如一个人驾驶一辆汽车,而一辆汽车可以被多个人驾驶,这就是
聚集关系
一个人拥有一个身份证,一个身份证也只能被一个人拥有,这就是组合关系
。
2、什么是“强是关系”和“弱是关系”,对于这两种关系,分别如何在代码中体现?
“强是关系”
描述直接继承关系,“弱是关系”
描述一个类具有某些属性,“强是关系”可以用类的继承表示,“弱是关系”可以用接口表示。
3、内聚和耦合的含义是什么?类的设计原则对于内聚和耦合是如何要求的?
内聚
指同一个类或模块内部的元素的关联性和紧密程度,耦合
指不同类或模块之间的联系紧密程度。
类的设计原则要求高内聚低耦合
,即同一个类或模块内部关联性强,不同类或模块之间的关联尽可能少,每个类或模块尽可能独立存在。
4、如何判断两个类之间应该使用继承关系还是聚集关系?
如果两个类之间为“是关系”
,则使用继承关系;如果两个类之间为“具有关系”
,则使用聚集关系。
如“拉布拉多”是“狗”,则拉布拉多和狗之间就是继承关系,
“教室”里面具有“学生”,则教室和学生就是聚集关系
5、如何实现数据域的封装性?
确保类中数据域的封装性的方法是给其增加 private
修饰符隐藏其可见性,避免从外部直接访问数据域。
如果需要从外部读取数据域的值,则提供读取器get方法。如果需要从外部修改数据域的值,提供设置器set方法。
如果一个方法只在类的内部使用,则应该对该方法使用 private 修饰符,避免从外部调用该方法。这就确保了数据域的封装性。
6、序列化和反序列化的含义分别是什么?
把对象
转化为字节序列
的过程称为对象的序列化,把字节序列
恢复成对象
的过程称为对象的反序列化
7、Serializable接口的作用是什么?这个接口包含哪些信息?
或:如何将一个对象标识成是可被序列化的?
Serializable
接口的作用是标识一个对象是否可被序列化,只有当一个类实现了Serializable
接口时,这个类的实例才是可序列化的,这个接口是标识接口,不包含任何数据域和方法。
8、关键字transient的作用是什么?
关键字transient
的作用是执行数据域不被序列化,当一个数据域不能被序列化,或者不想对一个数据域序列化时,给这个数据域加上关键字transient
,在序列化的过程中将忽略这个数据域。
9、Class类的作用是什么?
Class类的作用是在程序运行时保存每一个对象所属的类的信息,在程序运行时分析类。
10、Class类有哪些常用的方法,这些方法的作用分别是什么?
Class 类中最常用的方法是getName
,该方法返回类的名字。
Class 类中还有方法可以返回类中的数据域、方法和构造方法。
其中,方法名
不包含 Declared
的方法只返回公有的数据域、方法和构造方法,
方法名包含 Declared
的方法会返回所有的数据域、方法和构造方法。
方法名以 s 结尾
的返回所有的数据域、方法和构造方法,
方法名不以 s 结尾
的返回单个的数据域、方法和构造方法。
今日总结
今天和大家分享了面向对象的面试题中的最后一部分,这部分的内容主要要掌握的其实就两点,一个是了解序列化和反序列化操作
,另一个是熟悉反射机制
,其中反射是比较重要的一点,也是之后开发中会经常用到的内容。
到现在,面向对象相关的面试题就暂时和大家总结完了,如果小伙伴们有遇到其他相关的面试题,欢迎在评论区留言提出,我会把大家提出的总结到文章内`, 欢迎小伙伴们一起评论区打卡学习!小伙伴们可也在左方加我好友一起探讨学习!
我是灰小猿,我们下期见!
以上是关于Java核心面试宝典Day10面向对象常见面试题汇总的主要内容,如果未能解决你的问题,请参考以下文章