java高频面试之SE-05

面试官:java中为什么有多态?

面试官你好!Java 中有多态主要是为了实现灵活性和可扩展性。通过多态,可以用统一的接口处理不同的对象,从而提高代码的可维护性和可复用性。以下是多态的几个关键原因:

1. 代码灵活性

多态允许同一种方法在不同的对象上有不同的实现。这样可以在运行时决定调用哪个方法,使得代码更灵活。例如,move()方法可以在不同交通工具上表现不同(汽车开、飞机飞)。

2. 提高可扩展性

随着新类的添加,可以很容易地扩展程序功能。只需定义新的子类并覆盖父类的方法,即可无需修改已有代码,增强程序的可扩展性。

3. 简化代码

多态可以通过使用父类的引用变量来处理各种子类对象,减少了代码的复杂性。在处理集合时,使用父类类型的列表即可存储不同的子类型。

4. 接口和抽象类

多态与接口和抽象类密切相关。接口定义了方法,但并不实现,可以通过多态的方式让不同的类实现这些接口,从而提供多种行为。

例子

父类和子类:
class Animal {void sound() {System.out.println("动物发出声音");}
}class Dog extends Animal {void sound() {System.out.println("狗叫");}
}class Cat extends Animal {void sound() {System.out.println("猫叫");}
}
使用多态:
Animal myAnimal;myAnimal = new Dog();
myAnimal.sound(); // 输出: 狗叫myAnimal = new Cat();
myAnimal.sound(); // 输出: 猫叫

总结

多态使得 Java 程序设计更为灵活和可扩展。通过抽象和接口,不同对象可以通过同一方法表现不同的行为,让程序在保持简洁的同时获得更大的功能扩展性。这就是我对多态的理解。

面试官:java中重载和重写区别是什么?

重载(Overloading)和重写(Overriding)是 Java 中两个重要的概念,它们在方法的使用上有显著的区别。以下是它们的主要区别:

1. 定义

  • 重载:同一个类中可以定义多个同名方法,但它们的参数列表需要不同(参数数量或类型不同)。重载主要用于方法的选择,允许不同的输入给出不同的实现。

  • 重写:子类重新定义父类中的方法,方法名、参数列表和返回类型都必须相同。这用于在子类中提供特定的实现,覆盖父类的方法。

2. 发生的地方

  • 重载:发生在同一个类中,也可以在不同类中,如果这些类之间有继承关系。但一般说是在同一个类中更常见。

  • 重写:发生在继承关系中,且必须在子类中对父类方法进行重写。

3. 方法签名

  • 重载:方法名相同,但参数列表不同(参数个数、类型或顺序不同)。

  • 重写:方法名、参数列表(和抛出的异常)都必须完全相同。

4. 影响

  • 重载:编译时决定(静态多态),根据参数类型来确定调用哪个方法。

  • 重写:运行时决定(动态多态),具体调用的版本在运行时动态确定。

示例代码

重载示例
class Calculator {// 加法:两个整数public int add(int a, int b) {return a + b;}// 加法:三个整数public int add(int a, int b, int c) {return a + b + c;}// 加法:两个浮点数public double add(double a, double b) {return a + b;}
}
重写示例
class Animal {public void sound() {System.out.println("动物发出声音");}
}class Dog extends Animal {@Overridepublic void sound() {System.out.println("狗叫");}
}class Cat extends Animal {@Overridepublic void sound() {System.out.println("猫叫");}
}

总结

  • 重载允许在同一类中定义相同名称的方法(参数不同),可简化代码使用。
  • 重写允许子类提供父类方法的具体实现,支持多态性。

这两者各自用于不同的场景,灵活运用可以提高代码的可读性和可维护性。

IDEA ji huo
https://pan.quark.cn/s/4216736c0427
🎬大全
https://kdocs.cn/l/cqhxNU9I2lLD
12306回家科技
https://pan.quark.cn/s/45f6bf9be1b3
在这里插入图片描述

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

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

相关文章

DP83848以太网移植流程,可以TCP通信

DP83848-EP 是一款高度可靠、功能丰富的强大器件,包含了增强型 ESD 保护、MII 和 RMII,从而在 MPU 选择方面实现最大的灵活性,所有这些特性都融入于 48 引脚 PQFP 封装中。 DP83848-EP 配备 集成子层以支持 10BASE-T 和 100BASE-TX 以太网协议,这些协议确保了与基于其他标…

波动理论、传输线和S参数网络

波动理论、传输线和S参数网络 传输线 求解传输线方程 对于传输线模型,我们通常用 R L G C RLGC RLGC 来表示: 其中 R R R 可以表示导体损耗,由于电子流经非理想导体而产生的能量损耗。 G G G 表示介质损耗,由于非理想电介质…

基于pytorch的深度学习基础3——模型创建与nn.Module

三 模型创建与nn.Module 3.1 nn.Module 模型构建两要素: 构建子模块——__init()__拼接子模块——forward() 一个module可以有多个module; 一个module相当于一个运算,都必须实现forward函数; 每一个mod…

Android--java实现手机亮度控制

文章目录 1、开发需求2、运行环境3、主要文件4、布局文件信息5、手机界面控制代码6、debug 1、开发需求 需求:开发一个Android apk实现手机亮度控制 2、运行环境 Android studio最新版本 3、主要文件 app\src\main\AndroidManifest.xml app\src\main\res\layou…

Matlab 和 R 语言的数组索引都是从 1 开始,并且是左闭右闭的

文章目录 一、前言二、主要内容三、小结 🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、前言 在早期的计算机科学中,数组索引从 1 开始是很常见的。例如,Fortran 和 Pascal 等编程语言也采用了从 1 开始的索引。 这种索引…

【优选算法】复写零

链接:1089. 复写零 - 力扣(LeetCode) 算法原理: 解法:双指针算法 根据“异地”操作,然后优化成双指针下的“就地”操作 1.先找到最后一个“复写”的数 1.先判断 cur 位置的值 2.决定 dest 向后移动一步或…

鸿蒙之路的坑

1、系统 Windows 10 家庭版不可用模拟器 对应的解决方案【坑】 升级系统版本 直接更改密钥可自动升级系统 密钥找对应系统的(例:windows 10专业版) 升级完之后要激活 坑1、升级完后事先创建好的模拟器还是无法启动 解决:删除模拟…

大模型应用—IOPaint 图片去水印

IOPaint 是由 SOTA AI 模型提供支持的免费开源修复和修复工具,可以轻松实现图片去水印,去除图片不需要的部分,是目前效果最好的一个项目!完全免费开源 IOPaint 已经托管到 hugging face上,打开就可以直接免费使用,需要外网环境! 在线免费使用:【链接直达】 如果你需要…

SpringBoot项目的5种搭建方式(以idea2017为例)

目录 1. idea中使用官方API 2. idea中使用阿里云API 3. 在spring官网创建 4. 在阿里云官网创建 5. Maven项目改造成springboot项目 SpringBoot项目的创建细分一共有5种,其实主要分为以下三种: ①使用开发工具idea创建springboot项目( Sp…

【Java 学习】详细讲解---包和导包、Scanner类、输入源

1. 包 1.1 什么是包? 举个例子,你和你的同学有不同的家庭,你们都有自己的爸爸妈妈,都有自己的家。在自己的家中你们可以按照自己爱好摆放东西,都互不干扰。但是,假如你们的家都在一起,你们就不…

某科技局国产服务器PVE虚拟化技术文档

环境介绍 硬件配置 服务器品牌:黄河 型号:Huanghe 2280 V2 Cpu型号:kunpeng-920 磁盘信息 :480SSD * 2 ,4T*4 网卡:板载四口千兆 如下表 四台服务器同等型号配置,均做单节点虚拟化,数据保护采用底层r…

汽车免拆诊断案例 | 2011 款奔驰 S400L HYBRID 车发动机故障灯异常点亮

故障现象 一辆2011款奔驰 S400L HYBRID 车,搭载272 974发动机和126 V高压电网系统,累计行驶里程约为29万km。车主反映,行驶中发动机故障灯异常点亮。 故障诊断 接车后试车,组合仪表上的发动机故障灯长亮;用故障检测…

手把手教你安装配置『Oracle Database 19c』

前言 本文将会讲解如何在 Windows 系统上安装 Oracle Database 19c 数据库,适合初学者学习 Oracle 快速入门和实践练习,比较方便快捷 官方安装文档:Preinstallation Considerations for Installing Oracle Database 对于企业级的数据库&am…

学习solid works第七课------装配体

一、新建装配体 一、文件→新建,然后选择装配体 二、界面介绍 二、添加零件 装配体→插入零部件→选择零件再确定。 如果已经打开了零件,在添加零件的时候可以直接点击打开文档直接添加。 有时候一个零件需要多个地方使用,我们可以直接按住…

嵌入式驱动开发详解21(网络驱动开发)

文章目录 前言以太网框架ENET 接口简介MAC接口MII \ RMII 接口MDIO 接口RJ45 接口 PHY芯片以太网驱动驱动挂载wifi模块挂载后续 前言 linux驱动主要是字符设备驱动、块设备驱动还有网络设备驱动、字符设备驱动在本专栏前面已经详细将解了,网络设备驱动本文会做简要…

漏洞扫描:网络安全的 “体检” 与 “防护指南”

在当今数字化时代,网络安全如同守护城堡的坚固城墙,而漏洞扫描则是检查城墙是否存在缝隙与薄弱环节的重要手段。那么,究竟什么是漏洞扫描?又该如何进行呢? 什么是漏洞扫描? 漏洞扫描是一种安全检测过程&a…

Flutter 实现文本缩放学习

Flutter 如何实现一个简单的文本缩放应用程序,其中包含一个可以增加或减少文本大小的功能。 前置知识点学习 TextScaler TextScaler 是一个用于控制文本缩放的工具或机制,不过需要注意的是,TextScaler 并不是 Flutter 框架中内置的类。在 …

接口自动化测试框架(pytest+allure+aiohttp+用例自动生成)

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 近期准备优先做接口测试的覆盖,为此需要开发一个测试框架,经过思考,这次依然想做点儿不一样的东西。 接口测试是比较讲究效…

PG备份恢复--pg_dump

pg_dump pg_dump 是一个逻辑备份工具。使用 pg_dump 可以在数据库处于使用状态下进行一致 性的备份,它不会阻塞其他用户对数据库的访问 。 一致性备份是 pg_dump 开始运行时,给数据库打了一个快照,且在 pg_dump 运行过程 中发生的更新将不会被备份。 …

Docker 入门:如何使用 Docker 容器化 AI 项目(二)

四、将 AI 项目容器化:示例实践 - 完整的图像分类与 API 服务 让我们通过一个更完整的 AI 项目示例,展示如何将 AI 项目容器化。我们以一个基于 TensorFlow 的图像分类模型为例,演示如何将训练、推理、以及 API 服务过程容器化。 4.1 创建 …