在 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 時) 賦值。
- 靜態內部類 可以直接創建對象,不依賴外部類實例,賦值方式與普通類相同。