内部类
静态内部类
静态内部类是定义在另一个类里面的类,只不过在类的前面加了一个关键字static 静态内部类是不需要依赖外部类的。他不能使用外部类的非static成员变量或者方法。
成员内部类
成员内部类是最普通的内部类,它的定义位于另一个类的内部。
成员内部类可以无条件访问外部类的所有成员属性和成员方法。(包括private成员和静态成员)
要注意,当成员内部类拥有和外部类同名的变量或者方法时,回发现隐藏现象,即默认情况下访问的时成员内部类的成员,如果要访问外部类的同名成员需要以下面的形式进行访问
外部类.this.成员变量
外部类.this.成员方法
虽然成员内部类可以无条件地访问外部类的成员,而外部类想访问成员内部类的成员必须先创建一个成员内部类的对象,再通过指向这个对象的引用来访问。
成员内部类是依附内部类而存在的,也就是说如果要创建成员内部类的对象,前提是必须存在于一个外部类的对象。
Class Hello{
private int a = 10;
Class World{
public int b = 20;
public void show(){
System.out.println(a);
}
}
}
局部内部类
局部内部类定义在一个方法或者一个作用域里的类,它和成员内部类的区别在于局部内部类的访问仅限于方法内或者该作用域内。
匿名内部类
匿名内部类最方便,而且更加容易维护
匿名内部类不能有访问修饰符和static修饰符
匿名内部类是唯一一种没有构造器的类。