内部类即是包含在类里面的又一个类.
java内部类分为: 成员内部类、静态嵌套类、方法内部类、匿名内部类 。
内部类的共性
(1)、内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号 。
(2)、内部类不能用普通的方式访问。内部类是外部类的一个成员,因此内部类可以*地访问外部类的成员变量,无论是否是private的 。
(3)、内部类声明成静态的,就不能随便的访问外部类的成员变量了,此时内部类只能访问外部类的静态成员变量 。
成员内部类
class Outer {
class Inner{
}
}
成员内部类当要生成对象时,必须先生成外部类的对象,然后再通过外部类引用内部类:
编译上述代码会产生两个文件:Outer.class和Outer$Inner.class。
方法内部类
把类放在方法内
class Outer {
public void doSomething(){
class Inner{
public void seeOuter(){
}
}
}
}
(1)、方法内部类只能在定义该内部类的方法内实例化,不可以在此方法外对其实例化。
(2)、方法内部类对象不能使用该内部类所在方法的非final局部变量。
匿名内部类: