Java 高频面试题——区分方法的重载与重写

简介: 二者的定义细节:重载的概念:在同一个类中,允许存在一个以上的同名方法,只要他们的参数个数或者参数类型不同即可。

Java 高频面试题——区分方法的重载与重写


面试题:区分方法的重载与重写


  • 二者的定义细节:
  • 重载的概念:在同一个类中,允许存在一个以上的同名方法,只要他们的参数个数或者参数类型不同即可。
  • 重写的概念:在子类中可以根据需要从父类中继承来的方法进行改造,也称为方法的 重置 覆盖 。在程序执行时,子类的方法将覆盖父类的方法。


  • 从编译和运行的角度看:
  • 重载:是只允许存在多个同名方法,而这些方法的参数不同。编译器根据方法不同的参数表,对同名方法的名称做修饰。对于编译器而言,这些同名方法就成了不同的方法。他们的调用地址在编译器就绑定了 。Java 的重载是可以包括父类和子类的,即子类可以重载父类的同名不同参数的方法。
  • 所以对于重载而言,在方法调用之前,编译器就已经确定了所要调用的方法,这称为 早绑定静态绑定
  • 而对于多态,只有等到方法调用的那一刻,编译器才会确定所要调用的具体方法,这称为 晚绑定动态绑定


方法的重载


  • 重载的概念:在同一个类中,允许存在一个以上的同名方法,只要他们的参数个数或者参数类型不同即可。


  • 重载的特点:与返回值类型无关,只看参数列表,且参数列表必须不同。(参数个数或参数类型)。调用时,根据方法参数列表的不同来区别。


  • 示例:
// 返回两个整数的和
int add(int x, int y) {
  return x + y;
}
// 返回三个整数的和
int add(int x, int y, int z){
  return x + y + z;
}
// 返回两个小数的和
double add(double x, double y){
  return x + y;
}

判断是否是重载:


  • 跟方法的权限修饰符、返回值类型、形参变量名、方法体都没有关系。


  • 在通过对象调用方法时,如何确定某一个指定的方法:
方法名 ——> 参数列表


方法的重写(override/overwrite)


  • 定义:在子类中可以根据需要从父类中继承来的方法进行改造,也称为方法的 重置 覆盖 。在程序执行时,子类的方法将覆盖父类的方法。


  • 要求:
  • 子类重写的方法 必须 和父类被重写的方法具有相同的 方法名称参数列表
  • 子类重写的方法的返回值类型 不能大于 父类被重写的方法的返回值类型。
  • 父类重写的方法的返回值类型是基本数据类型,子类被重写的方法的返回值类型必须是相同的基本数据类型。
  • 子类重写的方法使用的访问权限 不能小于 父类被重写的方法的访问权限。
  • 子类不能重写父类中声明为 private 权限的方法。
  • 子类方法抛出的异常不能大于父类被重写方法的异常。


  • 注意:子类与父类中同名同参数的方法必须同时声明为非 static 的即为重写,或者同时声明为 static 的(不是重写)。因为 static 方法是属于类的,子类无法覆盖父类的方法。
相关文章
|
4天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
16 2
|
9天前
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
|
14天前
|
存储 缓存 Oracle
Java I/O流面试之道
NIO的出现在于提高IO的速度,它相比传统的输入/输出流速度更快。NIO通过管道Channel和缓冲器Buffer来处理数据,可以把管道当成一个矿藏,缓冲器就是矿藏里的卡车。程序通过管道里的缓冲器进行数据交互,而不直接处理数据。程序要么从缓冲器获取数据,要么输入数据到缓冲器。
Java I/O流面试之道
|
11天前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
35 4
|
11天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
51 4
|
24天前
|
存储 Java 程序员
Java面试加分点!一文读懂HashMap底层实现与扩容机制
本文详细解析了Java中经典的HashMap数据结构,包括其底层实现、扩容机制、put和查找过程、哈希函数以及JDK 1.7与1.8的差异。通过数组、链表和红黑树的组合,HashMap实现了高效的键值对存储与检索。文章还介绍了HashMap在不同版本中的优化,帮助读者更好地理解和应用这一重要工具。
51 5
|
23天前
|
存储 Java
[Java]面试官:你对异常处理了解多少,例如,finally中可以有return吗?
本文介绍了Java中`try...catch...finally`语句的使用细节及返回值问题,并探讨了JDK1.7引入的`try...with...resources`新特性,强调了异常处理机制及资源自动关闭的优势。
18 1
|
1月前
|
Java 程序员
Java 面试高频考点:static 和 final 深度剖析
本文介绍了 Java 中的 `static` 和 `final` 关键字。`static` 修饰的属性和方法属于类而非对象,所有实例共享;`final` 用于变量、方法和类,确保其不可修改或继承。两者结合可用于定义常量。文章通过具体示例详细解析了它们的用法和应用场景。
28 3
|
1月前
|
Java
Java面试题之cpu占用率100%,进行定位和解决
这篇文章介绍了如何定位和解决Java服务中CPU占用率过高的问题,包括使用top命令找到高CPU占用的进程和线程,以及使用jstack工具获取堆栈信息来确定问题代码位置的步骤。
97 0
Java面试题之cpu占用率100%,进行定位和解决
|
21天前
|
算法 Java
JAVA 二叉树面试题
JAVA 二叉树面试题
14 0