Java 中的重写和重载静态方法
在本文中,我们将讨论 Java 中是否可以覆盖和重载静态方法。 但在我们进一步讨论之前,让我们先明确几个关键点:
Java 面向对象的本质使得重写和重载变得至关重要。 当程序员需要多功能性时,他们可以利用此功能。
方法重载
编译时多态性,也称为静态多态性,与重载密切相关,重载是面向对象编程语言(如 Java)的另一个特征。 此函数允许许多方法具有相同的名称,同时具有不同的签名。
这些签名可能以各种方式变化,包括输入参数的数量和输入参数的类型。
静态方法
静态方法是以 static
关键字开头的方法。 类级方法是这个概念的另一个名称。
静态函数可通过标准实现供所有类实例使用。
方法重写
重写是 Java 等面向对象编程语言的一项功能,可促进运行时的多态性。 超类中定义的方法通常在子类或派生类中实现。
调用对象决定在运行时执行哪个实现。 重要的是要记住,两种方法的签名必须相同。
在解释了方法重载和重写之后,我们将讨论 Java 中是否可以重写或重载静态方法。
在 Java 中重载静态方法
是的,我们可以重载静态方法。 但是,重要的是要记住方法签名必须是唯一的,否则我们可以有两个或多个具有相同名称但输入参数不同的静态方法。
请考虑以下示例以更好地理解这个概念:
-
在下面的示例中,我们创建了两个静态方法,名为:
public static void A() {} public static void Z(int b) {}
-
之后,我们只需在这些方法中填充一些要在调用时显示的数据,如下所示:
public static void A() { System.out.println(" A() method is called: Hi, Muhammad Zeeshan here. "); }
-
最后,在
main()
方法中调用这两个方法来重载它们:public static void main(String args[]) { Shani.A(); Shani.Z(2); }
完整代码:
public class Shani {
public static void A() {
System.out.println(" A() method is called: Hi, Muhammad Zeeshan here. ");
}
public static void Z(int b) {
System.out.println(" Z(int b) method is called: Hello, Programmers. ");
}
public static void main(String args[]) {
Shani.A();
Shani.Z(2);
}
}
当我们通过调用 main()
方法来重载方法时,我们将得到如下输出:
A() method is called: Hi, Muhammad Zeeshan here.
Z(int b) method is called: Hello, Programmers.
在 Java 中重写静态方法
静态方法在编译时使用静态绑定进行绑定。 这就是为什么我们不能重写它们,因为方法重写是以运行时动态绑定为基础的,而静态方法已经在运行时使用动态绑定进行了绑定。
因此,我们无法重写静态方法。
让我们看下面的例子来更好地理解:
- 下面的 Tree 和 Root 类都具有相同的方法签名,即名为 Show() 的静态方法。 Root 的隐藏方法覆盖了基类的原始函数。
- 在 Root 类的对象上调用静态方法将调用 Root 类的静态方法。
-
在
main()
方法中,当我们通过传入 Tree 类的对象来调用静态方法时,会调用原始静态方法,如下例所示:
public class Shani {
public static void main(String args[]) {
Tree t = new Root();
t.Show();
}
}
完整代码:
public class Shani {
public static void main(String args[]) {
Tree t = new Root();
t.Show();
}
}
class Tree {
public static void Show() {
System.out.println(" Show() method of the *Tree* class "); }
}
class Root extends Tree {
public static void Show() {
System.out.println(" Overridden static method in *Root* class in Java "); }
}
输出:
Show() method of the *Tree* class
相关文章
Java 中可选的 ifPresent()
发布时间:2023/07/19 浏览次数:66 分类:Java
-
本文将讨论 Java 中名为 ifPresent() 的可选类方法。Java 中的可选类方法 ifPresent() 名为 ifPresent() 的可选类是一个实例方法,主要用于在该类的实例包含值时执行操作。 它是 Consumer 接口的实现。
Java 中的方法链
发布时间:2023/07/19 浏览次数:89 分类:Java
-
本篇文章介绍如何在 Java 中执行方法链。Java 中的方法链 方法链接使用点同时调用多个方法。点 . 运算符 方法链在一条语句中调用多个方法,而在一条语句中调用一系列方法。
Java迭代器remove()方法
发布时间:2023/07/17 浏览次数:117 分类:Java
-
Java 开发人员经常需要在迭代时从 ArrayList 中删除元素或对象。在本文中,我们将了解迭代器的remove()方法和集合的remove()方法的工作原理有何不同。
查找 Java 中的内存泄漏
发布时间:2023/07/17 浏览次数:96 分类:Java
-
本文将教我们如何查找Java内存泄漏。未使用的项目占用额外的内存空间称为内存泄漏。 内存泄漏是有问题的,因为它们会堵塞内存资源并随着时间的推移降低系统性能。
Java 8 Stream 中的属性不同
发布时间:2023/07/17 浏览次数:171 分类:Java
-
本文通过属性演示了在 Java 中使用流的独特功能。Java 8 Stream 中的属性不同 Java 8 Stream 有一个 distinct() 方法,可以过滤列表中的重复项。
在 Java 中将 Iterable 转换为 Stream
发布时间:2023/07/17 浏览次数:51 分类:Java
-
在本文中,我们将学习一种将 Iterable 转换为 Stream 的方法。在 Java 中使用 StreamSupport.stream() 方法将 Iterable 转换为 Stream
在 Eclipse 中更改 Java 版本
发布时间:2023/07/17 浏览次数:110 分类:Java
-
用户在处理特定项目时可能需要降级或升级 Java 版本。 在这种情况下,Eclipse IDE 允许我们更改特定项目的 JDK 版本。本文介绍了在 Eclipse IDE 中更改 Java 版本的分步指南。在 Eclipse 中下载并添加
在 Java 中使用 Fiddler 捕获 HTTPS 流量
发布时间:2023/07/17 浏览次数:59 分类:Java
-
Fiddler是一个Web调试代理工具,可以帮助开发人员调试Web应用程序。 它允许捕获网络流量并监控传入和传出的数据。本文将教我们设置Fiddler来捕获HTTPS流量。
用 Java 构建工具
发布时间:2023/07/17 浏览次数:53 分类:Java
-
本文主要关注Java构建工具。 首先,我们将了解什么是构建工具,然后我们将讨论 5 个最流行的 Java 工具。什么是构建工具 无论开发人员使用哪种编程语言来开发软件,构建工具在自动化构建过