java----内部类
1,内部类定义:类中定义类;
2,内部类仅仅是一个编译期的语法;
3,分类:成员内部类:定义在外部类以内,方法以外。
1可以访问外部类的私有成员;
2创建成员内部类对象,必须先创建外部类对象,再通过外部类
对象.new 构造内部类对象。
Outer.Inner in=new Outer.Inner();
in.print();
==>
Outer o1=new Outer(100);
Outer.Inner in=o1.new Inner();
in.print();
3内部类可以访问外部类的私有成员,而不破坏封装;
4成员内部类中不能有静态成员;
5外部类类名.this 指向外部类的当前对象;
静态内部类:static class Inner{
}
定义在外部类以内,方法以外。
1 静态内部类只能访问外部类的静态成员;
2 创建静态内部类对象,不需要先创建外部类对象;
Outer.Inner in=new Outer.Inner();
in.print();
局部内部类:1 定义在方法内部;
2 作用于方法内部,出了就不能用了;
3 使用范围等同于局部变量;
4 局部内部类不仅可以访问外部类的私有成员,还可以访问外部类的局部变量,
但是必须被声明为final(局部常量);
% 匿名内部类:把定义类,实现接口,new对象 三步合一了;
new I (){ };
匿名内部类无法定义构造方法,因为构造方法名称要与类名一致,而匿名没有名字
所以匿名内部类的构造方法是默认的。
1 特殊的局部内部类;
2 继承一个类或是实现一个接口;
3 只会创建该类的一个对象;
注:1 内部类可以访问外部类的私有成员,而不破坏封装;
2 接口公开,接口的实现类作为内部类隐藏起来,强制弱耦合;