在 Java 中,内部类的属性赋值方式取决于该属性的访问修饰符、内部类的类型(非静态或静态),以及赋值的时机。以下是几种常见的方式:
1. 通过构造方法赋值
class Outer {
class Inner {
private String name;
// 构造方法赋值
public Inner(String name) {
this.name = name;
}
public void print() {
System.out.println("Name: " + name);
}
}
public static void main(String[] args) {
Outer outer = new Outer();
Inner inner = outer.new Inner("张三");
inner.print(); // 输出:Name: 张三
}
}
2. 通过 setter 方法赋值
class Outer {
class Inner {
private int age;
public void setAge(int age) {
this.age = age;
}
public void print() {
System.out.println("Age: " + age);
}
}
public static void main(String[] args) {
Outer outer = new Outer();
Inner inner = outer.new Inner();
inner.setAge(25);
inner.print(); // 输出:Age: 25
}
}
3. 直接访问(前提是属性是 public)
class Outer {
class Inner {
public String message;
}
public static void main(String[] args) {
Outer outer = new Outer();
Inner inner = outer.new Inner();
inner.message = "Hello, world!";
System.out.println(inner.message); // 输出:Hello, world!
}
}
4. 赋值给静态内部类的属性
class Outer {
static class Inner {
private int number;
public void setNumber(int number) {
this.number = number;
}
public void print() {
System.out.println("Number: " + number);
}
}
public static void main(String[] args) {
Inner inner = new Inner();
inner.setNumber(100);
inner.print(); // 输出:Number: 100
}
}
总结:
- 非静态内部类 需要通过外部类对象创建,并可以使用 构造方法、setter 方法或直接访问(public 时) 赋值。
- 静态内部类 可以直接创建对象,不依赖外部类实例,赋值方式与普通类相同。