Java 中的静态类
在 Java 语言中,我们不能将外部类创建为静态类,但是有特权可以将嵌套的内部类创建为静态类。静态类的属性如下。
静态内部类永远不能访问外部类的非静态成员。
静态内部类不需要任何外部类引用来访问成员变量。
静态类永远无法实例化。因此,方法可以通过类名直接访问。
下面是演示上述两行的代码。
package static_class;
public class StaticInnerClass {
static int i = 1;
int j = 9;
public static void main(String[] args) {
StaticInnerClass s = new StaticInnerClass();
// s.InnerClass.printNum();
InnerClass.printNum();
}
public static class InnerClass {
public static void printNum() {
System.out.println(i);
//System.out.println(j);
}
}
}
在上面的代码中,我们创建了一个名为 StaticInnerClass
的外部类。这个类有一个静态字段、非静态字段、静态方法和一个静态内部类。在静态 main 方法中,我们创建了一个名为 s
对象的外部类的实例。当我们尝试使用外部类对象访问内部类 printNum()
方法时,即 s.InnerClass.printNum();
IDE 给出一个编译时错误,它指出静态内部类不需要外部类引用对象的任何引用来访问内部类方法。因此,我们可以通过类名直接访问内部类方法。
现在当我们看到 printNum()
方法的定义时。它有两个打印语句。首先打印外部类的静态字段,然后尝试打印相同的非静态变量。语句 System.out.println(i);
是有效的,这意味着只能从静态上下文访问静态成员。但是看看第二个语句,System.out.println(j);
无效,因为永远不能从静态上下文访问非静态成员。
在 Java 类中,不可能创建外部类静态
类。但是,我们可以使用一些定义的关键字来模仿行为。
final
关键字的使用是使类成为最终的。此关键字禁止类进一步扩展。原因是静态类的扩展没有用。
使用 private
关键字将构造函数设为私有,因为这会阻止静态类的实例化。正如静态类的属性所说,永远无法实例化它。
在成员变量和成员方法中使用 static
关键字。由于没有创建对象,因此永远无法访问非静态成员字段和函数。
下面是一个定义的静态类,它的用法用于制作 Utility
类,其中不需要创建此类的对象。
package static_class;
public final class StaticClass {
private static int a = 1;
private StaticClass() {
System.out.println("Cannot be instantiated");
}
public static void printNum() {
System.out.println(a);
}
}
相关文章
如何在 Java 中延迟几秒钟的时间
发布时间:2023/12/17 浏览次数:217 分类:Java
-
本篇文章主要介绍如何在 Java 中制造程序延迟。本教程介绍了如何在 Java 中制造程序延时,并列举了一些示例代码来了解它。
如何在 Java 中把 Hashmap 转换为 JSON 对象
发布时间:2023/12/17 浏览次数:187 分类:Java
-
它描述了允许我们将哈希图转换为简单的 JSON 对象的方法。本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。
如何在 Java 中按值排序 Map
发布时间:2023/12/17 浏览次数:171 分类:Java
-
本文介绍了如何在 Java 中按值对 Map 进行排序。本教程介绍了如何在 Java 中按值对 Map
进行排序,并列出了一些示例代码来理解它。
如何在 Java 中打印 HashMap
发布时间:2023/12/17 浏览次数:192 分类:Java
-
本帖介绍了如何在 Java 中打印 HashMap。本教程介绍了如何在 Java 中打印 HashMap 元素,还列举了一些示例代码来理解这个主题。
在 Java 中更新 Hashmap 的值
发布时间:2023/12/17 浏览次数:146 分类:Java
-
本文介绍了如何在 Java 中更新 HashMap 中的一个值。本文介绍了如何在 Java 中使用 HashMap 类中包含的两个方法-put() 和 replace() 更新 HashMap 中的值。
Java 中的 hashmap 和 map 之间的区别
发布时间:2023/12/17 浏览次数:79 分类:Java
-
本文介绍了 Java 中的 hashmap 和 map 接口之间的区别。本教程介绍了 Java 中 Map 和 HashMap 之间的主要区别。在 Java 中,Map 是用于以键值对存储数据的接口,
在 Java 中获取用户主目录
发布时间:2023/12/17 浏览次数:218 分类:Java
-
这篇文章向你展示了如何在 Java 中获取用户主目录。本教程介绍了如何在 Java 中获取用户主目录,并列出了一些示例代码以指导你完成该主题。
Java 中 size 和 length 的区别
发布时间:2023/12/17 浏览次数:179 分类:Java
-
这篇文章教你如何知道 Java 中大小和长度之间的区别。本教程介绍了 Java 中大小和长度之间的区别。我们还列出了一些示例代码以帮助你理解该主题。
Java 中的互斥锁
发布时间:2023/12/17 浏览次数:111 分类:Java
-
了解有关 Java 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,