# 说明
将类写在其他类的内部,可以写在其他类的成员位置和内部局部位置,这时写在其他类内部的类就称之为内部类
public class A{ | |
public void sayHi(){ | |
class A_1{// 内部类 在类的内部 | |
} | |
} | |
class A_2{// 内部类 在类的外部 | |
} | |
} |
# 成员内部类
定义格式:
public class 类名{ | |
修饰符 class 内部类名{} | |
} |
访问的方式:
外部类名。内部类名 变量名 = new 外部类名 ().new 内部类名 ();
# 局部内部类
定义格式:
public class 类名{ | |
public void 方法名(){ | |
修饰符 class 内部类名{} | |
} | |
} |
访问方式:
外部类名。内部类名 变量名 = new 外部类名 ().new 内部类名 ();
# 匿名内部类
比较常用的内部类就是匿名内部类了,它是局部内部类的一种
注意事项:
- 匿名内部类没有构造方法
- 匿名类不能定义静态的成员
- 匿名类不能使用
public
、private
、protected
、static
、final
、abstract
等修饰 - 只可以创建一个匿名的实例
定义格式:
new 父类或接口(){ | |
// 方法重写或者写自己要的方法 | |
} |
public class 类名{ | |
public class A{} // 成员内部类 | |
public static void main(String[] args){ | |
new A(){ | |
void Say(){ | |
System.out.println("Hi"); | |
} | |
}.Say(); | |
} | |
} | |
// 运行后结果:Hi |