匿名内部类
来源:互联网 发布:三菱plc仿真软件汉化 编辑:程序博客网 时间:2024/04/30 02:17
Java基础_内部类、静态内部类、成员内部类、局部内部类、匿名内部类 (转)
From: http://www.itzhai.com/java-based-notebook-a-static-inner-class-within-a-class-member-within-the-class-of-local-inner-classes-anonymous-inner-classes.html
内部类:
使用内部类减少了命名冲突。
一个内部类可以定义在一个类中,一个方法中甚至一个表达式中。
内部类分为四种:
静态内部类(static inner classes)
成员内部类(member inner classes)
局部内部类(local inner classes)
匿名内部类(anonymous inner classes)
1、静态内部类(static inner classes)
最简单的内部类。
只能访问外部类的静态成员变量与静态方法。
生成静态内部类对象的方法:
OuterClass.InnerClass inner = new OuterClass.InnerClass();
1.1、相关使用例子:
静态内部类:
1 class StaticInner{ 2 private static int a = 1; 3 4 /** 5 * 静态内部类 6 * 生成的类名:StaticInner$InnerClass 7 */ 8 public static class InnerClass{ 9 //静态内部类可以声明静态的成员变量,其他的内部类不可以10 private static int b = 1;11 public void execute(){12 //静态内部类只能访问静态程序13 System.out.println(a + b);14 }15 }16 }
main方法中使用:
1 public static void main(String[] args) {2 //创建静态内部类3 StaticInner.InnerClass innerClass = new StaticInner.InnerClass();4 innerClass.execute();5 }
2、成员内部类(member inner classes):
成员内部类可以访问外部类的静态与非静态的方法和成员变量。
生成成员内部类对象的方法:
OuterClass.InnerClass inner = new OuterClass().new InnerClass();
在局部内部类中访问外部类的成员变量的方法:
OuterClass.this.a;
2.1、相关使用例子:
成员内部类:
1 class MemberInner{ 2 private int a = 1; 3 4 public void execute(){ 5 //在外部类中创建成员内部类 6 InnerClass innerClass = this.new InnerClass(); 7 } 8 9 /**10 * 成员内部类11 */12 public class InnerClass{13 14 //内部类可以创建与外部类同名的成员变量15 private int a = 2;16 17 public void execute(){18 //this引用的是内部类19 System.out.println(this.a);20 //在内部了中使用外部类的成员变量的方法21 System.out.println(MemberInner.this.a);22 }23 }24 }
在main方法中使用:
1 public static void main(String[] args) {2 //创建成员内部类3 MemberInner.InnerClass innerClass = new MemberInner().new InnerClass();4 innerClass.execute();5 }
3、局部内部类(local inner classes):
类似于局部变量,不能定义为public,protected,private或者static类型。
定义方法中,只能方法中声明为final类型的变量。
3.1、相关使用例子:
局部内部类:
1 class LocalInner{ 2 3 public void execute(){ 4 final int a = 1; 5 /** 6 * 创建局部内部类 7 */ 8 class InnerClass{ 9 public void execute(){10 System.out.println("LocalInner Class");11 12 //局部内部类只能访问final类型的变量13 System.out.println(a);14 }15 }16 //只能在所在方法区域创建17 new InnerClass().execute();18 }19 }
在main方法中使用:
1 public static void main(String[] args) {2 //外部不能直接创建局部内部类3 LocalInner localInner = new LocalInner();4 localInner.execute();5 }
4、匿名内部类(anonymous inner classes):
匿名内部类没有类名,没有class关键字也没有extends和implements等关键字修饰。
匿名内部类会隐式地继承一个父类或实现一个接口。
4.1、相关使用例子:
1 public static void main(String[] args) { 2 AnonymousInnerClassTest test = new AnonymousInnerClassTest(); 3 4 /** 5 * 创建匿名内部类 6 * 生成的类名:AnonymousInnerClassTest$1 7 */ 8 test.print(new Date(){ 9 //重写toString()方法10 @Override11 public String toString() {12 return "Hello world.";13 }14 });15 16 JButton button = new JButton();17 18 /**19 * 创建匿名内部类20 * 该匿名内部类实现ActionListener接口21 * 生成的类名:AnonymousInnerClassTest$122 */23 button.addActionListener(new ActionListener(){24 //实现接口中的方法25 @Override26 public void actionPerformed(ActionEvent e) {27 System.out.println("使用匿名内部类实现ActionListener接口");28 }29 });30 }31 32 public void print(Date date){33 System.out.println(date);34 }
- 内部类、匿名内部类
- 内部类、匿名内部类
- 内部类,匿名内部类
- 内部类(匿名内部类)
- 内部类 ---匿名内部类
- 内部类,匿名内部类
- 匿名类、内部类、匿名内部类
- 匿名类、内部类、匿名内部类
- 匿名类、内部类、匿名内部类
- 匿名类,内部类,匿名内部类
- 匿名内部类,回调...
- 关于匿名内部类
- 匿名内部类
- JAVA匿名内部类
- 返回匿名内部类
- java 匿名内部类
- 匿名类内部类
- JAVA匿名内部类
- TextView轮播类似图片轮播
- ubuntu14.04搭建LAMP环境
- ios中集合遍历方法的比较和技巧
- nginx源码初读(3)--让烦恼从数据结构开始(ngx_pool)
- [从头学数学] 第103节 整理与复习--数与代数
- 匿名内部类
- 【SPOJ-NAGAY】Joseph’s Problem【余数求和】【分块】
- 在Eclipse中创建Maven多模块工程的例子
- Wordpress 网站搭建及性能监控方法详解!
- C++类和对象的应用实例——链表
- java将集合转换为数组(二维数组)
- 进程同步,条件变量,pthread_cond_wait,pthread_cond_init,PTHREAD_COND_INITIALIZER
- Ubuntu登陆windows搭建的FTP服务器文件名乱码解决方法
- 关于如果自己一个人负责测试一个app的思考