内部类
JAVA中的内部类有4种:
(1)实例(成员)内部类:定义在类的内部,方法或代码块外部,没有static修饰的类。它作为外部类的一个成员,与其外部类的属性、方法并列,故成员内部类可以访问外部类的一切成员,包括private修饰的。
在成员内部类中访问外部类与成员内部类重名的成员(属性、方法)时,使用----外部类名.this.属性/方法名;在外部类的外面访问成员内部类,使用----外部类名.成员内部类名;在外部类以外的地方构建成员内部类实例,使用----外部类名.成员内部类名 对象引用名 = (new 外部类名()).new 成员内部类名();
(2)静态内部类:与成员内部类相比,是多了static修饰的类。静态内部类只能访问外部类的静态成员,不能用private来修饰。它与成员内部类最主要的区别就是,静态内部类不需要构建外部类实例就可以直接构建静态内部类的实例。在静态内部类中访问外部类与成员内部类重名的静态成员(属性、方法)时,使用----外部类名.属性/方法名;在外部类以外的地方构建静态内部类实例,使用----外部类名.静态内部类名 对象引用名 = new 外部类名.静态内部类名();
(3)局部内部类:定义在方法或代码块内部的类。不能使用访问控制修饰符,如public,protected,private和static,其范围为定义它的代码块。局部内部类对外不可见,只有在其所在方法或代码块的内部才能调用;但是局部内部类可以访问外部类的一切成员,还可访问其所在的方法或代码块中的常量(即由final修饰的)。(少用,可放弃)
(4)匿名内部类:定义在方法或代码块内部的类,但是没有名字,只能在其所在之处使用一次。一个匿名内部类一定是在new的后面隐含着继承一个抽象父类或者实现一个接口,格式:抽象父类名|所实现接口名 对象引用名 = new 抽象父类名|所实现接口名(){...};{}中是抽象方法的实现代码。Android中的监听器用到匿名内部类最多。
浙公网安备 33010602011771号