大厂面试系列详解Java面向对象的三大基本特征
面向对象的核心思想就是一切皆对象,是对现实存在的事务进行一个抽象化的过程。在这个过程中我们需要了解如何将现实事物抽象成程序代码,而整个的过程离不开面向对象三大特性继承、封装、多态的支持。下面我们就来看一下在面试中我们应该如何回答三大特性相关的问题。封装
所谓的封装,就是将客观存在的事物进行抽象的过程。并且生成的对象中属性代表事物的属性,而封装的方法就代表了事物的行为。整个封装的过程就是将一些不可以展示的属性或者方法进行隐藏的过程。
简单来讲,就是如果一个类封装了一些属性和方法,那么就代表整个被封装的类对象某些方法是私有的只有自己可以看到,不可以被外界访问,除非自身提供了访问的方法。这样的操作可以保护对象的一些私有属性不会遭到破坏,防止程序中一些无关的代码对相应属性进行修改。
下面我们来封装一个矩形的对象类,并且定义了长和宽两个属性,并且还提供了计算矩形面积的方法publicclassRectangle{publicRectangle(intlength,intwidth){this。lengthlength;this。widthwidth;}privateintlength;privateintwidth;publicintarea(){returnthis。lengththis。width;}}
通过上面的封装操作,我们可以创建出一个与现实世界完全一致的矩形的抽象对象,并且可以调用计算面积的方式来获取到抽象矩形的面积。继承
关于继承,它所展示出来的就是Java的一种类扩展能力,我们可以在不改变原有抽象对象的基础上,对抽象类进行属性扩展和方法扩展的操作,就可以被称为是类继承操作。
通过继承操作可以创建子类、孙子类等等。而被继承的类对象就被称为是父类或者是超类。例如,我们可以创建一个Pet的宠物类。publicclassPet{privateStringname;privateStringage;publicvoideat(){System。out。println(吃东西);}}
通过继承这个宠物类我们可以创建一个Dog狗宠物类型,还可以创建一个Cat猫宠物,并且狗和猫,两种宠物都有名字和年龄,并且都有吃东西这个动作。代码如下。publicclassDogextendsPet{privateStringtype;publicvoidlookDoor(){System。out。println(看门);}}publicclassCatextendsPet{privateStringcolor;publicvoidsleep(){System。out。println(睡觉);}}
这里的猫、狗宠物在现实生活中都可以被归类为宠物,在代码抽象中,我们先抽象出来了宠物类,通过宠物类来派生出来了猫宠物和狗宠物,当然还有其他的宠物类型。我们都可以继承宠物类来实现一些基础属性。如上面代码中展示的一样,这种关系就可以通过继承来实现多态
Java中的多态是指一个类的实例对象的相同方法在不同形式下有不同的表现。多态机制是对同一接口对象在不同内部结构下不同状态显示的同样的调用。
也就是说,虽然针对的是不同的对象,但是通过一个公共的类,这些不同的类也可以通过同样的方法进行调用。
在Java中最常见的多态方式就是将子类传入到父类参数中,调用父类对象的方法通过传入的子类对象来判断具体的行为是什么。
一般我们可以将多态分为如下的几类特定多态:继承了同一个接口的不同类实现参数多态:通过参数传入的方式来判断不同类实现子类型结构:通过同一个类继承来实现不同类操作的结构
通过下面的代码来简单的理解一下多态。publicclassParent{publicvoidcall(){System。out。println(父类)}}publicclassSonextendsParent{1。有类继承或者接口实现publicvoidcall(){2。子类要重写父类的方法System。out。println(子类)}}publicclassDaughterextendsParent{1。有类继承或者接口实现publicvoidcall(){2。子类要重写父类的方法System。out。println(女类)}}publicclassTest{publicstaticvoidmain(String〔〕args){ParentpnewSon();3。父类的引用指向子类的对象Parentp1newDaughter();3。父类的引用指向子类的对象}}
这样就实现了一个简单的多态,因为同样继承的是Parent类型,但是Son和Daughter分别对call()方法进行了不同的实现。在使用的时候就可以根据具体的情况而定。
例如在我们Spring框架中最为经典的多态实现就是IOC容器操作,翻译成中文就是控制反转,它所提倡的思想就是将设计好的对象交给了容器来进行控制,而不是传统的我们通过new的方式来进行控制。这个时候,因为我们在使用之前不知道需要用到什么样的业务对象,所以在容器进行控制的时候我们提供的是一个接口类,这个接口类中实现了各种需要调用的方法。只有在实际操作的时候根据具体的实现来进行不同的封装,最终实现业务逻辑的调用。总结
上面我们介绍了面向对象的三大基本特征,也正是有了这三大基本特征,让我们的面向对象的编程变的更加高效。一般在面试中被提及最多的就是多态的实现,而对于多态的理解,在上面我们也给出了相应的介绍。在后续的分享中我们也会进一步的为大家带来更多干货的内容,希望大家可以多多关注。
曾游记丨宁乡温泉来源华声在线华声见习记者曾冠霖长沙断崖式降温最适合泡温泉,但是去哪儿呢?看这里,宁乡灰汤温泉职工疗养院,从市区出发只需要一个小时。依山而建的温泉谷和无边际浴池,能同时带来视野和身体
实地采访崖子镇50吨大金矿才发现,原来乳山从东到西山脉都是金子2023年3月18日山东省地矿局发布消息,山东威海乳山的崖子镇西涝口村探获一处50吨大型金矿。西涝口村北有一座牧牛山,这座牧牛山不高,海拔300米。这次发现的矿床位于牧牛山北东方向
我国科考队通过多方配合监测冰川变化共谋美丽生态家园近日,由中国科学院大学中科院西北研究院青海大学三江源生态与高原农牧业国家重点实验室三江源生态保护基金会等多家机构联合组成的科考队,对黄河上游的阿尼玛卿山开展了综合科学考察。在阿尼玛
实拍老挝姑娘在河边洗澡,河水很干净,尴尬难以启齿人们选择去老挝游玩,会发现当地很多美女都是直接在河里洗澡的。(此处已添加小程序,请到今日头条客户端查看)他们之所以来到这里组团洗澡,主要是当地十分的炎热,到河边洗澡,能够达到解暑纳
这不是特效!湖北恩施舟行水上似悬浮只因河水太清澈2023年3月14日,湖北恩施,屏山村屏山旅游景区,游人在坐船游玩。在湖北省恩施土家族苗族自治州鹤峰县容美镇屏山村屏山旅游景区,这里的河水清澈见底,舟行水上如悬浮空中,美如画卷。杨
中美之间极有可能暴发一埸科技经济战争!据美国(华尔街日报)3月18日的一篇报导称,一些美国硅谷科技公司的高管与美国国会的共和党和民主党议員,都一致反对中国参与美国的科技行业!这些人成立了一个叫(国会)山(硅)谷联论坛的
青版财经小记者了解智慧停车智慧社区拥抱未来生活3月19日,青版财经小记者走进智慧停车头部企业松立集团参观研学。小记者们了解大数据下的智慧停车智慧社区等平台的建设,拥抱未来生活,初步认识已经上升为国家战略数字中国智慧城市建设。在
如果我跑得比光更快,我会长生不老吗?大有学问长生不老一直是人类向往的梦想,随着科学技术的发展,人们开始探讨从根本上击败衰老的方法。在这个过程中,有人提出了一个有趣的问题如果我跑得比光更快,我会长生不老吗?让我们从科学
Arbitrum空投到来一文带你详细了解Arbitrum是什么?Arbitrum是以太坊的乐观式Rollup扩容方案,有以下特性无需信任的安全性安全扎根于以太坊,任何人都可以确保正确的L2结果。若L2链完全宕机,仅凭以太
数据传输检错技术CRCCRC简介数据在传输过程中可能会因为传输介质故障或外界的干扰而产生比特差错(使原来的0变为1,原来的1变为0),从而导致接收方接收到错误的数据。为尽量提高接收方收到数据的正确率,在
风浪越大鱼越贵!华为宣布重要决定,美媒我们封锁了个寂寞华为是一家全球领先的信息通信技术解决方案供应商,其研发实力远超国人的想象。除了手机业务,华为在许多领域都有着出色的表现。在面对美国的无底线制裁和打压之下,华为依然能够从容应对,不断