内部类:
一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。主要分4种:
- 成员内部类(作为外部类中的成员存在,类似属性和方法级别)
// 外部类
class Out {
double radius = 0;
public Circle(double radius) {
this.radius = radius;
}
// 成员内部类
class In {
public void inner() {
System.out.println("inner function");
}
}
}
- 方法内部类(在外部类中的方法中存在)
class Father{
public out(){}
}
class Out{
public Out(){}
public People getOut(){
// 方法内部类(不可以有修饰符)
class In extends Father{
int age =0;
}
return new In();
}
}
- 静态内部类(定义在外部类里面的类,以static修饰,类似静态变量)
// 外部类
class Outter {
public Outter(){}
// 静态内部类,只能访问外部类的静态成员
static class Inner {
public Inner() {}
}
}
- 匿名内部类(继承某个类或者实现某个接口一次,一次,一次)
interface Marry {
public void marry();
}
public class AnyInnerTest {
public static void main(String args[]) {
// 匿名内部类。直接在声明的时候实现接口
Marry m = new Marry(){
public void marry(){
system.out.println("结婚");
}
};
}
}
内部类的好处:
- 每个内部类都能独立的继承一个类,或者实现一个接口,所以无论外部类是否已经继承了某个类(或者实现某个接口),对于内部类都没有影响。内部类使得多继承的解决方案变得完整,
- 方便将存在一定逻辑关系的类组织在一起,又可以对外界隐藏。
- 方便编写事件驱动程序
- 方便编写线程代码