Java 的 default 关键字2025年1月6日 | 阅读 8 分钟 Java default 关键字 是一种访问修饰符。如果我们不为变量、方法、构造函数和类分配任何访问修饰符,默认情况下,它就被视为默认访问修饰符。default 关键字是一个多功能且强大的工具,在语言的各个方面都起着至关重要的作用。 注意事项
在接口中使用 default 关键字在 Java 中,接口传统上定义了类必须通过实现接口中声明的所有方法来遵守的契约。然而,当开发人员想要用新方法扩展接口,而又不强制所有实现类提供这些新方法的实现时,这会带来挑战。 default 关键字通过允许接口方法具有默认实现来解决此问题。这些方法隐式地是 public 的,并且如果需要,可以被实现类重写。通过允许向接口添加新方法而不会破坏现有代码,它有助于实现向后兼容性。 文件名:DefaultExample.java 输出 Car started. Vehicle stopped. 带有 default 方法的多重继承由于菱形问题,Java 不支持类的多重继承。然而,随着接口中 default 方法的引入,Java 有效地允许了行为的多重继承。如果一个类实现了具有冲突的 default 方法的多个接口,它必须显式地重写该方法,从而解决冲突。 文件名:UseOfDefault.java 输出 Interface1 Interface2 default 方法和接口演进引入 default 方法的主要动机之一是为了在不破坏现有代码的情况下支持接口的演进。通过添加具有默认实现的具体方法,接口可以随着时间的推移而演进,同时保持与实现类的向后兼容性。 文件名:DefaultExample.java 输出 Area of rectangle: 15.0 Area of circle: 50.26548245743669 This is a rectangle with width 5.0 and height 3.0. This is a shape. 在 switch 语句中使用 default 关键字Java 12 引入了 switch 表达式,它通过允许 switch 表达式返回值来增强传统的 switch 语句。default 关键字在 switch 表达式中用于指定当没有其他 case 匹配时执行的默认 case。 文件名:SwitchDefault.java 输出 Day name: Thursday default 关键字示例示例 1让我们看一个示例,以确定默认变量是否可以在包外访问。 文件名:A.java 文件名:DefaultExample1.java 输出 Exception in thread "main" java.lang.Error: Unresolved compilation problem: The field A.msg is not visible 示例 2让我们看一个示例,以确定默认变量是否可以在包内类外访问。 文件名:DefaultExample2.java 输出 Try to access the default variable outside the class within the package 示例 3让我们看一个示例,以确定默认方法是否可以在包外访问。 文件名:A.java 文件名:DefaultExample3.java 输出 Exception in thread "main" java.lang.Error: Unresolved compilation problem: The method msg() from the type A is not visible 示例 4让我们看一个示例,以确定是否可以使用继承在包外访问默认方法。 文件名:A.java 文件名:DefaultExample4.java 输出 Exception in thread "main" java.lang.Error: Unresolved compilation problem: The method msg() from the type A is not visible 示例 5让我们看一个示例,以确定我们是否可以使用默认外部类。 文件名:DefaultExample5.java 输出 Try to access outer default classs 示例 6让我们看一个示例,以确定我们是否可以从类外部创建默认构造函数的实例。 文件名:com.java 文件名:DefaultExample6.java 输出 Exception in thread "main" java.lang.Error: Unresolved compilation problem: The constructor A(String) is not visible 示例 7让我们看一个示例,以确定是否可以使用默认访问修饰符将默认方法重写到子类。 文件名:A.java 文件名:DefaultExample7.java 输出 Try to access the overridden method 示例 8让我们看一个示例,以确定是否可以使用 private 访问修饰符将默认方法重写到子类。 文件名:DefaultExample8.java 输出 Exception in thread "main" java.lang.Error: Unresolved compilation problem: Cannot reduce the visibility of the inherited method from A 示例 9让我们看一个示例,以确定是否可以使用默认访问修饰符将默认方法重写到子类。 文件名:DefaultExample9.java 输出 Try to access the overridden method 示例 10让我们看一个示例,以确定是否可以使用 public 访问修饰符将默认方法重写到子类。 文件名:DefaultExample10.java 输出 Try to access the overridden method |
图像处理是一项基本技术,它使计算机能够分析、操作和解释视觉信息。从增强照片到实现高级计算机视觉应用,图像处理在现代技术中起着至关重要的作用。Java 凭借其强大的库和框架,为...
阅读 6 分钟
在 Java 中,延迟初始化是一种对象仅在首次需要时才创建的技术。利用这种方法可能对创建成本高昂或可能完全不需要的对象有利。但是,延迟初始化可能会导致问题...
阅读 4 分钟
数组是 Java 中的一种线性数据结构。它允许我们存储相同数据类型的多个值。它们在 Java 中用作对象。对于基本数据类型,如 int 或 char,原始值存储在内存位置....
阅读 8 分钟
java.text.ChoiceFormat 是一个包含 equals() 函数的类。当比较两个 ChoiceFormat 对象时,ChoiceFormat 类用于确定比较的布尔值。语法:public boolean equals(Object obj_name) 参数:-其中 Obj 是一个参数,一个完全不同的 ChoiceFormat 对象用于比较,它……
阅读 2 分钟
java.time.chrono.MinguoDate 类具有 equals() 方法。要将此 Minguo 日期与另一个 Minguo 日期进行比较,请使用 MinguoDate 类。语法:public boolean equals(Object obj) 参数:要将此 Minguo 日期与等效对象进行比较,此方法需要一个等效对象作为输入。返回值:如果两个...
阅读 2 分钟
Java 中的构造函数链 在 Java 中,构造函数与方法相同,但唯一的区别是构造函数与类名相同。它用于创建类的实例。当……时,它会自动调用。
5 分钟阅读
在 Java 中,对象是组织代码和构建复杂数据结构的基本构建块。在 Java 编程中,将对象传递给方法是一个至关重要的概念,因为它允许我们操作这些对象并改变它们的特性。附带代码示例和...
5 分钟阅读
QuickSort 是一种高效的分治排序算法,它递归地将数组划分为较小的子数组。多线程允许在不同分区上并行执行排序,利用多个处理器核心来减少执行时间。它允许程序同时执行两个或多个部分以...
5 分钟阅读
给定一个包含非负数的数组,我们的任务是找出表示给定数组中两个数字的最小 XOR 值的那个值。考虑以下示例。示例 1:输入:int a[] = {10, 8, 5, 3, 1};输出:2 解释:在给定的数组中,我们...
7 分钟阅读
在此问题中,给出了两个排序的链表(按非递减顺序)。任务是找出这两个链表的交集,即找出同时存在于两个链表中的元素。示例 1:输入:链表 1:12 -> 13 -> 35 ->...
阅读 8 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India