Java静态内部类(嵌套类)详解与实例
需积分: 34 5 浏览量
更新于2024-09-23
1
收藏 2KB TXT 举报
"Java 静态内部类(嵌套类)是 Java 类定义的一种特殊形式,它位于另一个类的内部。与非静态内部类(也称为成员内部类)不同,静态内部类不需要对外围类有引用,因此可以直接通过类名进行实例化。这种特性使得静态内部类可以独立于外围类的实例存在。在使用静态内部类时,有一些关键点需要注意:
1. 创建静态内部类的对象不需要外围类的对象。这意味着你可以像创建任何其他静态成员一样创建静态内部类的实例,无需先创建外围类的实例。例如:
```java
Outer.StaticInner si = new Outer.StaticInner();
```
在这里,我们不需要一个 `Outer` 类的实例就可以创建 `StaticInner` 的对象。
2. 由于静态内部类不持有对外围类的引用,因此它不能直接访问外围类的非静态成员。如果需要访问外围类的非静态成员或方法,必须通过一个具体的外围类实例来完成。例如:
```java
public class Outer {
private int j = 10;
// 静态内部类
static class StaticInner {
void inner_f2() {
// 不允许直接访问非静态成员 j
// System.out.println("Outer.j" + j);
// 但可以通过外围类的实例访问
Outer outer = new Outer();
System.out.println("Outer.j" + outer.j);
}
}
}
```
3. 静态内部类可以访问外围类的所有静态成员,因为静态成员属于类本身,而不是类的实例。在上述示例中,`StaticInner` 可以直接访问 `Outer` 的静态成员 `i` 和静态方法 `outer_f1()`。
4. 静态内部类可以有自己的静态和非静态成员,以及构造函数。在定义时,可以像普通类那样声明字段和方法。例如,`Inner` 类拥有静态成员 `inner_i` 和非静态成员 `inner_j`,以及对应的访问方法。
5. 静态内部类可以被声明为 `public`, `protected`, 或 `private`,遵循与普通类相同的访问控制规则。不过,即使声明为 `public`,也不能从外部类的包外直接访问,除非该外部类也是公共的。
6. 静态内部类的实例与外围类的实例之间没有关联,它们是完全独立的。因此,可以同时有多个静态内部类的实例,而不需要额外的外围类实例。
Java 静态内部类提供了一种组织代码的方式,允许将相关的类放在一起,同时保持一定程度的封装和独立性。它们特别适用于那些不需要访问外围类实例数据,但与外围类逻辑紧密相关的辅助类。在设计时,应根据实际需求权衡是否使用静态内部类,因为它提供了便利,但也可能增加代码的复杂性。"
2020-09-03 上传
2018-08-13 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
su_jia
- 粉丝: 0
- 资源: 2
最新资源
- MATLAB实现小波阈值去噪:Visushrink硬软算法对比
- 易语言实现画板图像缩放功能教程
- 大模型推荐系统: 优化算法与模型压缩技术
- Stancy: 静态文件驱动的简单RESTful API与前端框架集成
- 掌握Java全文搜索:深入Apache Lucene开源系统
- 19计应19田超的Python7-1试题整理
- 易语言实现多线程网络时间同步源码解析
- 人工智能大模型学习与实践指南
- 掌握Markdown:从基础到高级技巧解析
- JS-PizzaStore: JS应用程序模拟披萨递送服务
- CAMV开源XML编辑器:编辑、验证、设计及架构工具集
- 医学免疫学情景化自动生成考题系统
- 易语言实现多语言界面编程教程
- MATLAB实现16种回归算法在数据挖掘中的应用
- ***内容构建指南:深入HTML与LaTeX
- Python实现维基百科“历史上的今天”数据抓取教程