Java 中接口变量和类变量的区别2025年7月15日 | 阅读 5 分钟 在Java中,接口和类都可以包含变量,但它们的行为方式截然不同。理解这些区别是编写正确且高效代码的关键。 接口变量Java中的接口定义了一个契约,它规定了一个类必须做什么,但不规定如何做。接口中的变量比较特殊。它们被设计为供任何实现该接口的类共享的常量。 接口变量的特性接口变量隐式地是public、static和final的。当我们不将任何变量声明为public、static和final时,Java编译器会自动为其添加这些修饰符。
必须初始化: 接口变量在使用前必须初始化。 用途: 它们用于定义常量。它们与接口的契约相关。例如,如果一个接口代表一个“形状”,它可能会定义PI作为常量。 没有实例变量: 接口不能包含常规的“实例变量”(属于每个对象的变量)。这是因为我们不能直接从接口创建对象。 示例:接口变量编译并运行输出 Application Name: Universal Pet Manager Maximum pets allowed in system: 5 Default food portion per pet: 0.5 kg 说明: 在PetSystem接口中,MAX_PETS_ALLOWED、DEFAULT_FOOD_AMOUNT_KG和APP_NAME自动是public static final的。它们是常量,可以通过PetSystemConstants.APP_NAME(或PetSystemConstants.MAX_PETS_ALLOWED等)从任何地方访问。一旦设置,它们的值就不能被改变。 类变量在Java中,类是创建对象的蓝图。类变量,也称为静态变量,是一种变量,它对整个类存在一次,而不是对从该类创建的每个对象都存在一次。 类变量的特性使用static关键字声明: 我们必须显式使用static关键字才能将变量声明为类变量。 可以使用任何访问修饰符: 与接口变量不同,类变量可以是public、protected、default或private。 可以是final或非final
初始化
目的
示例编译并运行输出 Added: Buddy (Total: 1) Added: Whiskers (Total: 2) Limit reached. Cannot add: Shadow Final total pets: 2 说明: MAX_PETS_ALLOWED是属于Main类的static final常量。它定义了整个系统(所有Main对象)允许的最大宠物数量,并且不可更改。totalPetsCreated是一个静态变量,用于跟踪成功创建的所有Main(宠物)对象的总数。它的值会随着新宠物的添加而改变,并且在所有Main对象之间共享,反映了该类的当前计数。 接口变量与类变量的区别接口变量和类(静态)变量都存储与它们的类型(接口或类)相关的信息,而不是与特定对象相关的信息。然而,它们的运行方式非常不同。下表重点介绍了这些主要区别。
结论总而言之,Java中的接口变量和类变量都是静态的。它们提供了存储与类型相关而不是特定对象相关的数据的方法。它们的基本特性和用例存在显著差异。接口变量是严格的public、static和final常量,用于定义接口契约固有的通用值。 |
java.text.RuleBasedCollator 类具有 getRules() 函数。在创建基于规则的排序器对象时,将使用 RuleBasedCollator 类来检索将应用的规则。语法:public String getRules() 参数:此方法不接受任何参数。返回值:使用的规则...
阅读 2 分钟
Java中的Collectors在Stream API中起着至关重要的作用,它们提供了一种便捷的方式将流的元素转换为各种数据结构,如List、Set或Map。在本节中,我们将探讨Java 10中一些常用的collector方法。toList()...
阅读 4 分钟
这是 Google、Amazon、TCS、Accenture 等顶级 IT 公司面试中经常问到的问题。通过解决该问题,人们希望检查被面试者的逻辑能力、批判性思维和解决问题的能力。因此,在本节中,我们将计算...
5 分钟阅读
名为 Java.util.concurrent.atomic.AtomicIntegerArray.set() 的内置 Java 函数允许您在 AtomicIntegerArray 的任何位置设置值。此函数通过提供 AtomicIntegerArray 的索引值作为参数来修改指定索引处的值。上述方法不返回值....
阅读 3 分钟
在 Java 中,LinkedTransferQueue 是一个并发队列实现,它结合了传统阻塞队列和直接传递队列的特性。它实现了扩展了 BlockingQueue 类的 TransferQueue 接口,并通过... 扩展了生产者-消费者场景的功能。
14 分钟阅读
什么是 .NET?Microsoft 的 .NET 框架是一个开源框架,面向 Microsoft 产品用户。该框架最初于 2002 年发布时是专为 Microsoft 设计的。这意味着您无法在 Linux、Android 或 iOS 上编写代码或执行生成的应用程序。它曾经是...
阅读 3 分钟
C 语言 C 是一种中级、编译型、通用编程语言,它采用自顶向下的方法来开发应用程序。它由 Dennis Ritchie 于 1970 年在贝尔实验室为 Unix 操作系统开发。它非常适合开发固件和可移植应用程序。示例 #include ...
阅读 4 分钟
>> << Java assert 关键字用于测试程序的假设。在执行断言时,假定其为真。如果失败,JVM 将抛出名为 AssertionError 的错误。它主要用于测试目的。断言的优势它提供了一种有效的检测...
阅读1分钟
在使用线程安全的、可调整大小的数组时,多个线程可以执行插入和删除等操作,而不会有数据损坏的风险。虽然 ArrayList 是一个标准的 Java 类,但默认情况下它不是线程安全的。可以使用并发集合或同步...
阅读 6 分钟
在 Java 中,颜色在创建视觉上吸引人且交互式应用程序方面发挥着至关重要的作用。无论您是开发游戏、图形用户界面 (GUI) 还是数据可视化,理解如何使用颜色都是必不可少的。在 Java 中,Color 类提供了一种强大而灵活的方式...
5 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India