java高频面试之SE-05

embedded/2024/12/26 12:55:36/

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

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

1. 代码灵活性

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

2. 提高可扩展性

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

3. 简化代码

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

4. 接口和抽象类

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

例子

父类和子类:
java">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("猫叫");}
}
使用多态:
java">Animal myAnimal;myAnimal = new Dog();
myAnimal.sound(); // 输出: 狗叫myAnimal = new Cat();
myAnimal.sound(); // 输出: 猫叫

总结

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

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

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

1. 定义

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

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

2. 发生的地方

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

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

3. 方法签名

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

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

4. 影响

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

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

示例代码

重载示例
java">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;}
}
重写示例
java">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.ppmy.cn/embedded/148896.html

相关文章

不在广东想把自己的IP变成广东怎么办

点击这篇文章的读者中,很多可能需要将自己的本机IP地址修改为广东省的IP地址。那么如何操作才能切换到广东省呢?如果您人不在广东省内,但是在国内的其他地区,这时可使用支持切换IP地址的软件进行辅助。 随着代理IP技术在网络中得到…

如何根据一系列提交文件,匹配对应的git提交记录?用ai

显示提取提交文件记录的git历史(用的豆包写一下) 显示每次提交涉及的文件名及提交注释等基本信息 可以使用以下命令格式: git log --name-only --prettyformat:“%an - %s” myFolder/ –name-only选项的作用是在显示提交信息时&#xff0…

【Leetcode】855. 考场就座

文章目录 题目思路代码复杂度分析时间复杂度空间复杂度 结果总结 题目 题目链接🔗 在考场里,有 n n n 个座位排成一行,编号为 0 0 0 到 n − 1 n - 1 n−1。 当学生进入考场后,他必须坐在离最近的人最远的座位上。如果有多个…

C语言-基因序列转换独热码(one-hot code)

1.题目要求 (语言: C)在生物信息学家处理基因序列时,经常需要将基因序列转化为独热码,在英文文献中称做 one-hot code, 直观来说就是有多少个状态就有多少比特,而且只有一个比特为1,其他全为0的一种码制。 如基因序列有四种状态&…

云手机服务器如何做到群控多台手机的?

亚矩阵云手机服务器解决方案是基于ARM集群芯片和虚拟化技术的一站式解决方案,具有高性能,高集成度的特点;支持一键操控、应用多开、真机检测等功能;广泛适用于舆情监测、海外推广、APP检测、政务云手机等场景。 亚矩阵云手机服务器…

Java学习笔记(16)--面向对象编程

学习资料来自接口 - Java教程 - 廖雪峰的官方网站 面向对象基础 目录 面向对象基础 接口 定义 术语 接口继承 继承关系 default方法 default方法和抽象类的普通方法的区别: 练习 小结 接口 定义 如果一个抽象类没有字段,所有方法都是抽象方…

华三M-LAG场景下,部分MAC内的流量泛洪导致端口流量打满

互联网各领域资料分享专区(不定期更新): Sheet 问题描述 华三M-LAG场景下,部分MAC内的流量泛洪导致端口流量打满 解决方案 在交换机设备上创建1个无用的聚合口,该聚合口加入到mlag组,并将异常泛洪的MAC加入到该接口即可解决。&…

拆解Java中——“ 注解 ”和“ 注释 ” 的一切区别Ⅱ

前言: 上一篇,我们讲到了: ①注解的引入(简单概述):在jdk5.0的时候 ②注解与注释的区别: 注释 是为了帮助人类阅读代码,不会对程序的执行产生任何影响。注解 是为了给编译器或运行…