内部类

将一个类定义置入另外一个类定义中就叫做“内部类”
特色:内部类做为外部类的成员,能够直接访问外部类的成员(包括private成员),反之则不行。
内部类作为外部类成员,可声明为private、默认、protected或public。
内部类成员只有在内部类的范围以内是有效的。
用内部类定义在外部类中不可访问的属性。这样就在外部类中实现了比外部类的private还要小的访问权限。
编译后生成两个类: OuterClass.class 和OuterClass$InnerClass.classthis

内部类分类:
成员内部类 静态内部类 方法内部类 匿名内部类
1.成员内部类
当内部类的成员和外部类的成员重名的时候,在内部类默认使用内部类的成员
若是在内部类想要使用外部类的重名成员,须要用 外部类名.this.成员名
外部类的成员方法能够直接使用内部类
其余类不能直接访问内部类,只能间接方法,建立外部类的对象,再建立内部类的对象,才能使用内部类
2.静态内部类
在内部类前加static 就是静态内部类、若是内部类中的属性或方法是static,则这个内部类必须是static
静态内部类只能使用外部类的静态成员,不能使用外部类的非静态成员,静态的内容都是属于类全部,能够经过类名直接调用。因此静态的内部类也是属于类全部,能够直接用外部类的类名来调用,来建立对象。
3.方法内部类
将内部类定义在外部类的方法中
方法内部类不能在外部类的方法之外的地方使用,方法内部类不能使用访问控制符和static修饰
方法内部类若是想使用方法的参数,那么参数前必须加final关键字
方法中的内部类 只能在方法内使用,出了方法就不能再使用方法中的内部类了,因此要想使用内部类 就必须在方法结束以前使用内部来建立一个对象 ,使用内部类的对象来调用内部类的方法。
4. 匿名内部类
没有名字的内部类
匿名内部类有个前提条件:必须存在继承和实现关系
适合只须要使用一次的类
当一个接口的实现类只须要使用一次,这时候能够直接用接口来new对象。接口不能直接建立对象,因此在new对象以前,先将接口实现成一个实现类,再用该实现类去建立对象对象

相关文章
相关标签/搜索