Java 中早期绑定和晚期绑定的区别2025 年 3 月 31 日 | 阅读 3 分钟 在 Java 中,“绑定” 这个术语描述了 Java 编译器将对方法或函数的调用与语句主体关联起来的机制。简单来说,绑定就是 Java 编译器在调用函数时查找合适的方法的过程。Java 中的绑定根据编译器能够在何时将方法体与其方法调用链接起来,分为两个主要类别。
1. 静态绑定或早期绑定将方法体与其调用进行连接或“绑定”的过程称为绑定。Java 编译器在构建时将这两个实体关联起来的过程称为早期绑定或静态绑定。在任何方法执行之前,静态绑定用于将任何私有、最终或静态方法体与其方法调用语句进行链接。方法重载是早期绑定的最佳示例。 输出 Car Engine Started Car Engine Started 让我们检查上述代码的输出。我们发现,尽管 “startEngine” 方法在派生类 Porsche 中被重写,并且 “car1” 对象是用 Porsche 类的引用初始化的,但 “startEngine()” 方法保持不变,仍然打印了超类 Car 的文本。这是因为 Car 类的静态函数 “startEngine()” 在编译时被 Java 编译器限制,无法重写。 后期绑定或动态绑定如果编译器在编译时无法确定特定的方法调用与哪个方法绑定,则使用后期绑定或动态绑定。方法重写是动态绑定的最有效示例。子类重写了超类的方法,在执行期间,方法会链接到正确的引用。 应强调的是,为了使动态绑定生效,被重写的方法不得声明为静态、最终或私有。如果在使用修饰符声明方法时使用了上述任何修饰符,Java 将使用静态绑定,因为它能够快速识别父类引用并阻止方法被重写。 让我们使用之前的示例来检查动态绑定。但是,这次方法不会声明为“static”。 输出 Porche's Engine Started Car Engine Started 从输出差异可以清楚地看出,调用了重写方法 “startEngine()”,并且在第一次方法调用期间正确地绑定了 Porsche 类的引用。由于我们不再使用 static 关键字作为方法的修饰符,Java 编译器在编译时无法找到要绑定的引用,因此不得不诉诸动态绑定。这意味着方法的类型或引用是在运行时决定的。 早期绑定与后期绑定的比较在这里,您将了解早期绑定和后期绑定之间的直接比较。早期绑定和后期绑定之间的主要区别如下:
|
在本节中,我们将学习什么是迷人数字,并创建 Java 程序来检查给定数字是否迷人。迷人数字程序经常在 Java 编码测试中出现。迷人数字将一个数字分别乘以二和三,...
阅读 3 分钟
在 Java 中进行文本格式化和字符串操作时,某些字符起着至关重要的作用。行提字符就是其中之一。在 Java 中,行提字符由转义序列“\n”表示。它看起来可能是一个...
阅读 4 分钟
它是数学和计算机科学中最著名的数列之一,斐波那契数列。从 0 和 1 开始,系列中的每一项都是前两项的总和,给出一个通常看起来像:0、1、1、2、3、5、...的系列。
阅读 4 分钟
Java 的泛型提供了一种强大而安全的方式来创建处理各种类型但仍保持类型安全性的类、接口和方法。通配符在泛型中的应用进一步增强了其灵活性,使您能够设计更具适应性和可重用性的代码。上界通配符是一种...
阅读 4 分钟
在 Java 中,ConcurrentModificationException 是一个异常,它告诉我们当其元素正在被并发遍历时,集合在结构上发生了修改。这通常发生在迭代器正在迭代集合时(例如,添加或删除元素)。让...
14 分钟阅读
Java.util.List是Collection的一个派生接口。它是一组有序的对象,允许存储重复值。List由于维护插入顺序,因此允许按位置访问和插入元素。Vector、Stack、LinkedList和ArrayList类用于实现List...
阅读 6 分钟
Java 中的所有变量和表达式在编译期间都使用静态类型。当开发人员运行代码编译过程时,每个元素和表达式都会链接到特定的数据类型。该语言的静态类型功能可以保护操作,同时确保用户在兼容的数据类型上执行方法……
5 分钟阅读
Java 9 Stream API 改进 在 Java 9 中,Stream API 得到了改进,并在 Stream 接口中添加了新方法。这些方法如下表所示。修饰符和类型方法描述 default Stream<T> takeWhile(Predicate<? super T> predicate) 如果此流已排序,则返回一个由最长前缀元素组成的流……
阅读 3 分钟
Java 8 是 Java 平台的一次突破性发布,引入了大量新功能,其中 lambda 和 Stream API 最为突出。然而,一个经常被忽视的功能是 Compact Profiles,它提供了一种缩减 Java 运行时环境的方法...
阅读 3 分钟
? 一个可以通过多种方式完成的典型编程任务是反转字符串。逐个字母反转字符串是最直接的技术之一。在本教程中,我们将介绍 Java 中逐个字母反转字符串。让我们先掌握基础知识...
5 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India