什么是内部类?
一个类嵌套另一个类
class Outer{外部类
class Inner1{成员内部类;};
static class Inner1{静态内部类;};
public void m1{
class Inner2{局部内部类} ;
new A1(){匿名内部类};
}
class M2{外部其它类};
分4种
1、定义在外部类方法中或代码块中:(当作局部变量使用)
(1)局部内部类(有类名)
(2)匿名内部类(没有类名)
共同特点:1、两者可以访问外部类所有成员包括私有的,不能添加修饰符,因为它的地位就是局部变量,但可以用final修饰。
2、作用域:方法中或代码块中。
3、外部类要访问方法体中的类要创建对象去调用。
4、如果外部类和内部类有重名,遵循就近原则,内部类要去调用外部类成员可以(外部类名.this.成员)
重点:匿名内部类,语法:new 类或接口(参数列表){类体},它既有类的特征又有对象的特征,在使用时JDK底层会去创建一个外部类对象作为运行对象据继承调用了类或实现调用接口,从而去重写类或接口方法,也可做参数传递,十分灵活。
2、定义在外部类的成员位置上:(当作成员变量使用)
(1)成员内部类
(2)静态内部类(用static修饰)
1、可以添加访问任意修饰符,因为它是成员变量。
2、成员内部类可以访问所有成员,但静态内部类只能访问静态成员。
3、作用域:整个外部类体
4、外部类访问它们是也要创建对象调用。
5、外部类成员与内部类成员重名时同样遵循就近原则,成员内部类调用外部类成员(外部类名。this.成员)静态内部类调用外部类成员(外部类名.成员)