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/10/10 浏览次数:73 分类:Java
-
这篇文章将要导入 Java 中的自定义类。本文介绍了如何在 Java 中导入自定义类。如果该类存在于同一个包中,则通过创建其对象来使用该类,如果该类存在于另一个包中
在 Java 中设置 classpath
发布时间:2023/10/10 浏览次数:174 分类:Java
-
这篇文章是关于在 Java 中设置 classpath 的。本文介绍了在 Java 中设置类路径 classpath 的过程,并列出了一些示例代码以理解该主题。
在 Java 中扩展两个类
发布时间:2023/10/10 浏览次数:111 分类:Java
-
这篇文章是关于可用于在 Java 中扩展两个或多个类的方法。本文介绍如何在 Java 中扩展两个或多个类。我们还提供了一些示例代码来帮助你理解该主题。
在 Java 中获取类名
发布时间:2023/10/10 浏览次数:152 分类:Java
-
这篇文章展示了如何在 Java 中获取类名本文介绍如何使用四种方法在 Java 中获取类名。在很多情况下,我们可能希望在 Java 中获取类名。在 Java 中使用 class.getSimpleName() 获取类名
Java 中的私有静态变量
发布时间:2023/10/10 浏览次数:160 分类:Java
-
本教程演示了 Java 中的私有静态变量。类变量,通常称为静态变量,在类中使用 static 关键字定义,但在方法、构造函数(默认或参数化)或块之外。
Java 中的 super 关键字
发布时间:2023/10/10 浏览次数:141 分类:Java
-
本教程演示了如何在 Java 中使用 super()。在 Java 中,我们有一个与父类有些相关的预定义关键字 super。我们将在本教程中详细讨论 super() 函数。
Java 中的规则引擎列表
发布时间:2023/09/30 浏览次数:107 分类:Java
-
本文介绍了 Java 中的规则引擎列表。规则引擎将业务逻辑与源代码分开。本文描述了一些最流行的 Java 规则引擎。
Java 中的按钮单击事件
发布时间:2023/09/30 浏览次数:196 分类:Java
-
本文介绍如何在 Java 中创建按钮单击事件。我们使用事件侦听器在 Java 中创建按钮单击事件。本文介绍如何在 Java 中创建按钮单击事件。