java基础 内部类详解
什么是内部类?
1.内部类也是一个类;
2.内部类位于其他类声明内部。
内部类的常见类型
1.成员内部类
2.局部内部类
3.匿名内部类
4.静态内部类
简单示例
/** * 外部类 * */ public class OuterClass { private String s = "private String from OuterClass"; private String fs = "final String from OuterClass"; /** * 成员内部类,字面上理解就是外部类的一部分。类似外部类的属性或方法 * 外部类的属性和方法对于内部类都是可以访问的,包括private属性方法 * 调用方法 外部类名。this。属性或方法 */ class PartnerClass { public void print() { System.out.println("this comes from PartnerClass and can get "+OuterClass.this.s); OuterClass.this.print(); } } private void print() { System.out.println("private method form OuterClass"); /** * 局部内部类只可以在一定范围内被访问 */ class Part { void print() { System.out.println("this comes from part class and can get "+ OuterClass.this.s); } } new Part().print(); } interface Anonymous { void print(); } /** * 匿名内部类多为已经定义好的接口或抽象类,在需要使用的地方采取进行具体实现 * 同成员内部类类似 */ Anonymous anyms = new Anonymous() { @Override public void print() { System.out.println("this comes from a anonymous class and can get "+OuterClass.this.fs); OuterClass.this.print(); } }; /** * 静态内部类只能访问外部类的静态属性和方法 * 静态内部类可以通过new OuterClass。StaticClass()的方式创建静态内部类对象 */ private static class StaticClass implements Anonymous { @Override public void print() { System.out.println("this comes from static inner class"); } } public static void main(String[] args) { OuterClass outer = new OuterClass(); /** * 外部类可以创建获取内部类对象 * 创建方法为 new 外部类().new 内部类() */ outer.new PartnerClass().print(); outer.anyms.print(); StaticClass sc = new OuterClass.StaticClass(); sc.print(); } }
内部类有什么用处?
1.隐藏类名和具体实现细节
2.内部类可以访问外部类的属性和方法
3.内部类可以用来实现闭包和回调
4.内部类可以用来实现多重继承
5.封装数据进行传值
个人内部类使用经验不多,以后有用到会补充进来