内部类
成员内部类
(1)内部类可以直接使用外部类的成员变量和成员方法,外部类
不可以直接使用内部类的变量和方法
(2)内部类和外部类中出现崇明的变量解决方案
this.变量 调用的是内部类变量
外部类.this.变量 调用的是外部类变量
(3)成员内部类 等级和成员变量、成员方法等级是一样的
静态成员内部类
(1)静态成员内部类只可以直接调用外部类中的静态成员变量
(2)内部类产生的class文件名字 外部类$n内部类.class
局部内部类
(1)局部内部类只可以在当前方法中使用,出了当前方法就没有办法使用
(2)局部内部类只可以使用方法中常量,不可以使用变量
(3)JDK1.8开始,局部内部类中使用常量的final关键字可以不写
public class TestA {
public static void main(String[] args) {
System.out.println("--------调用非静态成员内部类方法--------------");
//[1]创建外部类对象
Student stu=new Student();
//[2]使用外部类对象创建内部类对象
Student.A a= stu.new A();
//[3]调用a类方法
a.getSxt2();
System.out.println("--------调用静态成员内部类方法--------------");
//Student2 stu2=new Student2();
Student2.A.cc();//调用静态内部类中静态方法
Student2.A a1 = new Student2.A();
a1.bb();//调用静态内部了中非静态方法
}
}
匿名内部类
(1)匿名内部类没有办法书写构造函数
(2)匿名内部类的作用就是为了快速的构建一个实现类,在这个实现类中定义普通方法,外部是调用不到的,因为不满足多态调用方法的特性
(3)匿名内部类中变量是没有办法通过外部赋予初始值,只可以使用代码块的方式赋值