你好,面试官 | 你真的理解面向对象?

校招面试求职,大厂学习导航!

致力打造全网最佳大厂进阶平台~

本期是【你好,面试官】系列文章的第1期,持续更新中.....。

【校招求职】系列已完更,后面有新的补充再续~

该系列给大家全面剖析了 简历如何写?项目哪里找?亮点怎样包装?二本上岸经验?

接下来,将推出《你好,面试官》系列,不一样的系列,轻松掌握知识~

序言

大家好,我是小龙。

曾几何时,大家是否有这样的困惑?

知道相关的知识点,但是面试时面试官换一种问法,你便不知道怎样回答,给你一个场景,你就联系不到相关的知识点上,或者不知道用对应知识去分析相关问题。

比如 “你知道垂直定理,但是你遇到相关几何题,就是想不到用这个定理去解决问题”。

新的篇章将开启,本系列会结合小龙面试经历以及身边上岸大厂的朋友们的面试经历、面试录音、面试分享,尽可能还原面试现场

带大家感受面试现场结合情景学会灵活的应用知识。看一看大佬们都是怎样面试的。

记得每期结束,问问自己,你真的对知识掌握了吗?

小龙有话说

本期会从最基础的开始,人人都知道面向对象,那你是否真的理解面向对象,不信?你接着往下看·。

本期题目选自 ——2022届秋招 北森 一面

面试现场

叮叮叮......

面试官:“你好,我是XX面试官,请问是小龙吗?”

小龙:“您好,面试官,我是小龙”

面试官:“好的,现在有空吗,我们开始面试吧”

小龙:“嗯嗯,准备好啦”

.......

other questions

.......

面试官:“都说Java是面向对象的,你能告诉我 你是怎么理解面向对象的吗?”

小龙:“咱们可以和面向过程对比起来理解,C就是面向过程,面向过程注重实现过程,一件事怎样做,以过程为中心”

小龙:“而面向对象只关心怎样使用,实现对象是谁,不关心怎样实现,具有封装、继承、多态三大特性”

面试官:“那你是怎样理解这三大特性的?”

独白:“tm 都问那么基础吗?”

小龙:“封装的话,可以不用关心内部实现,具体构造,只需知道怎么操作它就是,比如电视,手机,将内部封装起来,直接使用”

小龙:“继承的话,使代码更容易扩展,比如有学生教师,他们都有一些公用方法与属性,可以将其抽取出来定义为父类,再去继承它,复用代码,减少冗余,易于扩展

小龙:“多态的话,父类或接口定义的引用变量可以指向子类或具体实现类的实例对象,然后你编译的时候不知道这个指针指向哪里,等到运行时才知道,从而去指向对应的子类或者接口具体实现的类所指向的方法。”

面试官:“好的,那你能说说为何要有多态吗?或者说多态有何意义呢?”

独白:“??what 之前底层八股背得飞起,遇到基础的反而有点不适应的,疯狂回忆平常写的代码,做的实验”

独白:“我也不知道咋个组织语言,平时没专门看过,就随便举个例子吧!!”

小龙:“因为同一个方法调用,由于对象不同可能会有不同的行为。比如都是休息,张三是睡觉,李四是爬山等;或则具体场景中,我不知道现在具体传进来的对象是 student 还是 teacher,那么可以用 pepole 去接收它。”

面试官:“可以这么理解。”

面试官:“那假如我如下这样定义,结果输出的分别是谁的呢?”,

Person p=new Student();
System.out.println(p.age);
System.out.println(p.action());

小龙:“成员变量是取父类的值,而调用的方法是执行子类的方法输出。”

面试官:“好的,看来基础还是不错,我们下期接着聊~”

独白:“终于不问这些基础了,再问估计就破防了,呜呜~”

知识总结

你要的八股~

面向对象

  • 面向过程:一件事该怎么做,注重实现过程,以过程为中心

  • 面向对象:实现对象是谁,只关心怎样使用,不关心具体实现(只关心实现对象是谁,有封装、继承、多态三大特性

  • 面向过程面向过程性能比面向对象高。 因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的考量因素的时候,比如单片机、嵌入式开发、Linux/Unix 等一般采用面向过程开发。但是,面向过程没有面向对象易维护、易复用、易扩展。

  • 面向对象面向对象易维护、易复用、易扩展。 因为面向对象有封装、继承、多态性的特性,所以可以设计出低耦合的系统,使系统更加灵活、更加易于维护。但是,面向对象性能比面向过程低

多态理解

父类或接口定义的引用变量可以指向子类或具体实现类的实例对象,然后你编译的时候不知道这个指针指向哪里,等到运行时才知道,从而去指向对应的子类或者接口具体实现的类所指向的方法

  • 多态体现:父类引用指向子类对象或接口实现

  • 多态实现条件:继承,方法重写,父类引用指向子类对象

  • 父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了

  • 格式:父类类型 变量名=new 子类类型();

  • 多态成员变量:编译运行看左边

  • 多态成员方法:编译看左边,运行看右边

猜你喜欢

转载自blog.csdn.net/qq_43666365/article/details/127349677