Java基础20问(1-5)

news2024/11/24 8:02:43

1.Java面向对象和面试过程的区别?

面向过程是将一个问题拆解成几个步骤,依次实现每一个步骤,比如实现一个冒泡排序的算法,是为了解决某个非常具体的问题。

面向对象也是将一个问题拆解成几个步骤,但是先不去实现,而是根据这些步骤抽象出若干个类,每个类都有属性和方法,咱配合着把问题解决。比如把大象装进冰箱,得有一个冰箱类和大象类,还有一个执行者类。执行者类拥有一个放入的方法,传入两个参数:大象冰箱

2.面向对象的三大特性怎么理解?

1.封装

把客观的事物抽象成一个类就是封装,实际开发中,这个事物往往是一个业务对象,比如贷款,公积金,房产等。

2.继承

编程界的继承就是子类继承父类,从而可以复用父类的属性和方法,目的就是少写代码。

3.多态

子类继承父类后,虽然继承了父类的属性和方法,但是业务上往往需要子类拥有不同的行为,所以在一个继承链中同一个方法很有可能出现不同实现(方法重写/重载),这就是多态的一个体现。

多态还体现在方法传参的时候,比如一个eat方法,参数列表是Food类型,那么所有继承自Food类的实例都可以传进去。目的是提高程序的灵活性。

3.继承和实现有什么区别?

一个类用 extends 关键字继承父类,用 implements 关键字实现接口,不管是继承还是实现,这个类都可以视为父类/接口类的子类。

继承和实现都是为了实现多态,Java支持多实现,单继承。

4.为什么Java不支持多继承

需要多继承的场景很少,而且多继承会带来菱形问题,C++为了解决菱形问题引入了虚继承,过于复杂,没必要。

PS:所谓菱形问题就是B类和C类都继承了A类,D类同时继承B类和C类,那么A类中的方法会在D类里面获取两次,这时D类如果调用A类的方法,会有歧义。

5. 面向对象的无法基本原则?

单一职责原则 (SRP):

这个原则指的是一个类最好只做一件事。这有助于降低类的复杂性,提高代码的可读性和可维护性。例如,一个汽车类可以有一个方法叫做move(),而这个方法里面包含了所有关于移动汽车的行为,加速、减速、转弯等等。这就不符合单一职责原则,因为move()方法做了太多的事情。更好的做法是将加速、减速、转弯等行为放在各自的方法中,使得每个方法都只做一件事情。

开放封闭原则 (OCP):

这个原则是指对扩展开放,对修改封闭。也就是说,在设计一个系统的时候,应该使得它可以通过添加新的代码来进行扩展,而不是通过修改已有的代码。例如,如果我们有一个处理VIP用户的类,我们可以为这个类添加一个新的方法来处理新类型的VIP用户,而不是修改已有的方法来处理新的VIP用户。

里氏替换原则 (LSP):

这个原则是指子类必须能够替换其父类。也就是说,如果一个类B继承自一个类A,那么在使用A的地方应该可以使用B。这个原则可以帮助我们确保继承的正确使用,避免向下替换的问题。

简单来说,就是任何你用到父类的地方,就算换成子类,程序也不会报错。

所有子类的行为功能必须和使用者对其父类的期望保持一致,如果子类达不到这一点,那么必然违反里氏替换原则。

如果违反了,我们就要反思,是不是我们的继承用错了。比如鸟类实现了飞翔的接口,鸵鸟能继承鸟类嘛?显然不行,因为鸟类希望所有的继承者都会飞,而鸵鸟显然不能飞,强行继承的话,在鸟飞调用fly方法的时候,鸵鸟就报错了。

依赖倒置原则 (DIP):

这个原则是指程序要依赖于抽象接口,而不是具体的实现。也就是说,我们在编程的时候应该依赖于接口或者抽象类,而不是具体的实现类。

简单来说就是定义对象的时候,用接口或者抽象类,而不是一个具体的实现类。

这样可以使得我们的代码更加灵活,可以方便地更换实现。例如,我们有一个接口叫做Printer,有很多实现这个接口的类(如PrinterA, PrinterB等等)。在我们的代码中,我们不应该直接使用PrinterAPrinterB,而应该使用Printer接口。这样如果以后我们想更换成其他的打印机,只需要添加一个新的实现类就可以了。

接口隔离原则 (ISP):

这个原则是指使用多个小的专门的接口,而不要使用一个大的总接口。

简单来说就是接口方法尽量少,避免一个类因为实现了接口,要去实现一大堆自己用不到的方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1098067.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为云云耀云服务器L实例评测|企业项目最佳实践之评测用例(五)

华为云云耀云服务器L实例评测|企业项目最佳实践系列: 华为云云耀云服务器L实例评测|企业项目最佳实践之云服务器介绍(一) 华为云云耀云服务器L实例评测|企业项目最佳实践之华为云介绍(二) 华为云云耀云服务器L实例评测&#xff5…

B端设计的核心:助你成功的关键!

B端设计是指针对企业、组织、机构等机构客户的设计服务,通常称为“企业级设计”或“商业设计”,而不是针对消费者的C端设计。B端设计是一个旨在实现企业商业目标的设计过程,旨在满足企业客户的需求,帮助他们增强市场竞争力&#x…

python实现免疫算法,并绘制训练过程

免疫算法同遗传算法相似,不过子代是克隆出来的,而不是交叉,并且引入了抗体间亲和度的概念,算出抗体适应度之后,我们还需要减去抗体间亲和度,从而使得结果不容易陷入局部最优。 注意代码里的n是仅仅x的位数…

华为云云耀云服务器L实例评测|企业项目最佳实践之docker部署及应用(七)

华为云云耀云服务器L实例评测|企业项目最佳实践系列: 华为云云耀云服务器L实例评测|企业项目最佳实践之云服务器介绍(一) 华为云云耀云服务器L实例评测|企业项目最佳实践之华为云介绍(二) 华为云云耀云服务器L实例评测&#xff5…

注册大量短视频矩阵账号很简单,这个方法教会你,还有这个批量剪辑神器帮你完成矩阵分发

一个人一天就能注册上百个抖音实名账号,那么是如何做到的呢?其实很简单,只需要一个营业执照就能办到。 一个营业执照可以点亮两个蓝v号,每个蓝v账号可以注册50个员工账号。 员工账号和个人号的实名是不冲突的,所以之前…

关闭VS Code中的鼠标悬停时的提示框(MDN Reference)

在使用VS Code编辑器写html文件时,鼠标悬停在写的某些内容时会弹出一个提示框,如下图: 这个提示是比较烦人的,接下来分享关闭它的教程: 这里是以Win10版的Visual Studio Code为例 1.打开VS Code 的设置界面 2.在扩展…

历史上最愚蠢的代码

目录 1. 马赛勒航天飞机坠毁: ​2. 2000年问题(Y2K Bug): ​3. 阿里亚5号火箭爆炸: 4. Knight Capital Group的交易错误: 在编程历史上,有一些代码错误导致了严重的后果,可以被视…

旧手机热点机改造成服务器方案

如果你也跟我一样有这种想法, 那真的太酷了!!! ok,前提是得有root,不然体验大打折扣 目录 目录 1.做一个能爬墙能走百度直连的热点机(做热点机用) 2.做emby视频服务器 3.做文件服务, 存取文件 4.装青龙面板,跑一些定时任务 5.做远程摄像头监控 6.做web服务器 7.内网穿…

REF615 REU615 RED615 人工智能在工业中的第一步

REF615 REU615 RED615 人工智能在工业中的第一步 工业必须面对广泛的挑战:从气候变化和能源短缺到不稳定的供应链和技能短缺。成功应对这些挑战需要创新技术和明智的经济政策战略。 汉诺威工业博览会2023提供了两者:不仅是工业、立法者、学术界和社会代表之间交流的独特平台&a…

企业如何凭借软文投放实现营销目标?

数字时代下,软文投放成为许多企业营销的主要方式,因为软文投放成本低且效果持续性强,最近也有不少企业来找媒介盒子进行软文投放,接下来媒介盒子就来给大家分享下,企业在软文投放中需要掌握哪些技巧,才能实…

微信小程序开发之入门级02(带你进一步了解微信小程序开发)

目录 ​编辑 前言 一、 微信小程序的生命周期 1. 概述 2. 全局与页面的生命周期函数 2.1 全局的生命周期函数: 2.2 页面的生命周期函数: 3. 常用的生命周期函数和对应的应用场景 3.1 onLaunch(小程序启动) 3.2 onShow&am…

Mac卸载微信输入法方法

陪伴着「微信输入法」更新了N多个beta版本之后,最终还是选择卸载。 至今,微信输入法也没有来到1.0。 本来,每次期望着它能有更大的提升,但是最后发现,搞输入法确实也需要技术沉淀的。 但也必须承认,这个绿色…

【oceanbase】centos7/kylinv10部署oceanbase(x86版本)

1. 修改系统​ vim /etc/sysctl.conf fs.file-max 102400 net.nf_conntrack_max 1024000 net.netfilter.nf_conntrack_max 1024000 2. 修改 ulimit 的 open file,系统默认的 ulimit 对文件打开数量的限制是 1024 vim /etc/security/limits.conf # 加入以下…

消防应急疏散指示系统在某生物制药工厂项目的应用

安科瑞 华楠 摘要 消防应急照明和疏散指示系统由控制器、集中电源和灯具(疏散指示灯具、应急照明灯具)等几部分组成。系统采用17寸工业平板电脑、Windonws7系统,可支持联动报警、系统监控、故障报警、自检、备电、记录存储与查询、导光流、…

物流行业案例 | 甄知猪齿鱼助力构建高效研发体系,搭建统一的研发管理平台

随着全球经济的发展和电子商务的兴起,物流行业正经历着快速的变革和发展,作为支撑我国经济发展的重要基础设施,近年来社会物流总额一直保持着平稳增长的趋势。根据中国物流与采购联合会数据,2012-2022年,我国社会物流总…

Improving Generalization with Domain Convex Game

文章目录 AbstractIntroductionContributions Related WorkDomain GeneralizationConvex GameMeta Learning Domain Convex Game 使用域凸策略改进领域泛化 Abstract Domain generalization (DG) tends to alleviate the poor generalization capability of deep neural netwo…

在自己的摄像头上测试ORB_SLAM3

文章目录 硬件相机标定IMU标定依赖编译可能遇到的问题 硬件 x86电脑realsense d435i相机 相机标定 IMU标定 依赖 Ceres # CMake sudo apt-get install cmake # google-glog gflags sudo apt-get install libgoogle-glog-dev libgflags-dev # BLAS & LAPACK sudo apt…

STM32 外部中断

STM32 外部中断 中断系统 中断:在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续运行 中断就是…