Java | 静态嵌套类(Static Nested Class)
2024-08-30 03:08:16
前言
定义
静态嵌套类(Static Nested Class),是 Java 中对类的一种定义方式,是嵌套类的一个分类。
Java 编程语言允许一个类被定义在另一个类中,这样的类就称为嵌套类。嵌套类分为两种:静态的和非静态的。用 static
关键字来声明的嵌套类,就称为静态嵌套类。
包含嵌套类的类,可称为外围类(Enclosing Class)或外部类(Outer Class)。静态嵌套类不能访问其外围类的其他成员。静态嵌套类作为其外部类的成员,它可声明为 private
、public
、protected
或包私有的。
- 提示:外部类只能声明为
public
或包私有的。
概述
与类的方法和变量一样,静态嵌套类与其外部类相关联。与类的静态方法一样,静态嵌套类不能直接引用其外围类中定义的实例变量或方法。
/**
* 定义一个公共的 OuterClass 类。
*/
public class OuterClass {
private final String name; public static void main(String[] args) {
String name = "Java";
OuterClass outerObject = new OuterClass(name);
OuterClass.StaticNestedClass nestedObject =
new OuterClass.StaticNestedClass(name);
System.out.println(outerObject.getName());
System.out.println(nestedObject.getName());
} /**
* 定义一个 OuterClass 类的构造方法。
*
* @param name 表示一个名称字符串。
*/
public OuterClass(String name) {
this.name = name;
} public String getName() {
return name;
} /**
* 定义一个包私有的 StaticNestedClass 类。
*/
static class StaticNestedClass {
private final String name; /**
* 定义一个 StaticNestedClass 类的构造方法。
*
* @param name 表示一个名称字符串。
*/
public StaticNestedClass(String name) {
this.name = name + " (in the nested object)";
} public String getName() {
return name;
}
}
}
/* 输出结果:
Java
Java (in the nested object) */
在上述示例中,若 StaticNestedClass 类的实例在创建时需要使用 OuterClass 类的成员变量,则可向其构造方法传递该变量的值。
- 提示:静态嵌套类在与其外部类或其他类的实例成员进行交互的时候,就像任何其他顶层类(Top-Level Class)一样。实际上,静态嵌套类在行为上就是一个顶层类,为了便于打包,它被嵌套在了另一个顶层类中。
请用外围类名来访问静态嵌套类,例如,在为静态嵌套类创建对象时,请使用以下语法:
OuterClass.StaticNestedClass nestedObject =
new OuterClass.StaticNestedClass(name);
最新文章
- C#版的mongodb最新的官方驱动2.4.0版本
- mac下网页中文字体优化
- filestream read方法 循环读取固定文件
- C#中的集合有几种?
- Android第三方jar包ClassNotFind
- 1 。 LightOJ 1234 打表法(数据太大,把数据缩小100倍)
- iOS中的imageIO与image解码
- Bootstrap_排版_列表
- nginx本地的测试环境添加SSL
- Java静态字段(属性、方法、类别)
- VB.NET版机房收费系统---异常处理
- Previous operation has not finished;run 'cleanup' if it was interrupted;Please execute the 'Cleanup' command.
- Linux学习小记(1)
- 力扣(LeetCode)520. 检测大写字母
- jquery 滚动条位置的
- hadoop sqoop的常用名命令
- SDN交换机迁移2
- LTE时代的定位技术:OTDOA,LPP,SUPL2.0
- Unity3D中的弹道和移动目标提前量计算
- pylot 学习笔记