上一篇
Java内部类如何正确进行属性赋值操作?
- 后端开发
- 2025-09-17
- 4
Java 内部类是一种在另一个类内部定义的类,它可以访问外部类的所有成员变量和成员方法,包括私有成员,内部类有几种类型,包括成员内部类、局部内部类、匿名内部类和静态内部类,下面将详细介绍如何为不同类型的内部类赋值。
成员内部类
成员内部类是定义在外部类的方法之外的内部类,要为成员内部类的成员变量赋值,可以在外部类的构造器、方法或成员内部类的构造器中直接赋值。
| 场景 | 代码示例 |
|---|---|
| 外部类构造器中赋值 | public class OuterClass {<br>private int outerField;<br>public InnerClass(int value) {<br>outerField = value;<br>InnerClass inner = new InnerClass();<br>inner.innerField = 10;<br>}<br>class InnerClass {<br>private int innerField;<br>InnerClass(int innerValue) {<br>innerField = innerValue;<br>}<br>}<br>} |
| 成员内部类构造器中赋值 | public class OuterClass {<br>class InnerClass {<br>private int innerField;<br>InnerClass(int innerValue) {<br>innerField = innerValue;<br>}<br>}<br>} |
局部内部类
局部内部类是在一个方法内部定义的内部类,要为局部内部类的成员变量赋值,可以在外部类的成员方法中创建局部内部类的实例,并在创建实例时直接赋值。
| 场景 | 代码示例 |
|---|---|
| 成员方法中赋值 | public class OuterClass {<br>public void method() {<br>LocalInnerClass localInner = new LocalInnerClass(10);<br>localInner.localField = 20;<br>}<br>class LocalInnerClass {<br>private int localField;<br>LocalInnerClass(int localValue) {<br>localField = localValue;<br>}<br>}<br>} |
匿名内部类
匿名内部类是在创建对象的同时定义的内部类,要为匿名内部类的成员变量赋值,可以在创建匿名内部类的实例时直接赋值。


| 场景 | 代码示例 |
|---|---|
| 创建匿名内部类时赋值 | public class OuterClass {<br>public void method() {<br>OuterClass outer = new OuterClass() {<br>int anonymousField = 10;<br>}<br>}<br>} |
静态内部类
静态内部类是一种没有使用 this 关键字的内部类,要为静态内部类的成员变量赋值,可以在创建静态内部类的实例时直接赋值。

| 场景 | 代码示例 |
|---|---|
| 创建静态内部类实例时赋值 | public class OuterClass {<br>static class StaticInnerClass {<br>private static int staticField = 10;<br>}<br>} |
FAQs
Q1:为什么内部类可以访问外部类的私有成员?
A1:内部类是外部类的成员,因此可以访问外部类的所有成员,包括私有成员,这是因为内部类具有对外部类的“权限”,可以访问外部类的私有成员。
Q2:内部类与外部类的对象之间的关系是什么?
A2:内部类与外部类的对象之间是相互独立的,每个外部类的对象都可以创建自己的内部类实例,而内部类的实例不会影响外部类的对象。