0%

java | 内部类

定义在一个类里面的类就是内部类。

可以提供更好的封装性。

  • 静态内部类
  • 实例内部类「成员内部类」
  • 局部内部类
  • 匿名内部类

静态内部类

static 修饰,属于外部类本身,会加载一次。

  • 静态内部类可以访问外部静态属性
  • 静态内部类不能访问外部属性
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.redisc;

class Outter {

public static int age = 12;
public String name;

public static class Inner {
public void which() {
System.out.println("which");
System.out.println(age);
// System.out.println(name); 这个报错
}
}
}

public class Test {


public static void main(String[] args) {
Outter.Inner inner = new Outter.Inner();
inner.which();
}
}

实例内部类

无 static 修饰。

不能在内部类定义静态成员,但是可以定义 final 修饰的静态成员。「注:静态成员包括属性和方法」

实例内部类可以直接访问外部类的成员。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package com.redisc;

class Outter {

public static int age = 12;
public String name;

public class Inner {
// public static int age = 11; 错误
public static final String test = "test";

public void which() {
System.out.println("which");
System.out.println(age);
System.out.println(name);
}
}
}

public class Test {


public static void main(String[] args) {
Outter.Inner inner = new Outter().new Inner();
inner.which();
}
}

局部内部类

定义在方法里面。

几乎用不到,目前没发现应用场景。

请我喝杯咖啡吧~