定义在一个类里面的类就是内部类。
可以提供更好的封装性。
- 静态内部类
- 实例内部类「成员内部类」
- 局部内部类
- 匿名内部类
静态内部类
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);
} } }
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 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(); } }
|
局部内部类
定义在方法里面。
几乎用不到,目前没发现应用场景。