码迷,mamicode.com
首页 > 编程语言 > 详细

Java---匿名类总结

时间:2014-10-21 21:24:56      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:android   style   blog   color   io   ar   使用   java   for   

今天学习Android开发,为实现button控件的onClick事件,其中一种实现方法是用匿名类,在此把Java中匿名类进行总结。

匿名内部类--没有名字的内部类,因为没有名字,所以只能使用一次

匿名内部类--它通常用来简化代码编写

使用匿名内部类前提条件:必须继承一个父类或实现一个接口

注:只要一个类是抽象的或是一个接口,那么其子类中的方法都可以使用匿名内部类来实现;

最常用的情况就是在多线程的实现上,因为要实现多线程必须继承Thread类或是继承Runnable接口

1:未使用匿名类实现方式举例

 

 1 abstract class Person{
 2     abstract void eat();
 3 }
 4 
 5 class Student extends Person{
 6     void eat(){
 7         System.out.println("Student eat!");
 8     }
 9 }
10 public class InnerClass {
11     public static void main(String[] args){
12         Person stu = new Student();
13         stu.eat();
14     }
15 
16 }

输出结果:>Student eat!

实现过程:Student类继承了Person类,作为其子类实现了一个实例,并将其向上转化为Person类的引用。

  2:匿名内部类基本实现方式

 1 abstract class Person{
 2     public abstract void eat();
 3 }
 4 
 5 public class InnerClass {
 6     public static void main(String[] args){
 7         Person stu = new Person(){
 8             public void eat(){
 9                 System.out.println("Student eat!");
10             }
11         };
12         stu.eat();
13     }
14 
15 }

输出结果:>Student eat!

实现过程:将Person类中的抽象方法eat()直接放在了大括号中实现,注意大括号后要有一个分号!

3:匿名内部类用在接口上

 1 interface Person{
 2     public abstract void eat();
 3 }
 4 
 5 public class InnerClass {
 6     public static void main(String[] args){
 7         Person stu = new Person(){
 8             public void eat(){
 9                 System.out.println("Student eat!");
10             }
11         };
12         stu.eat();
13     }
14 
15 }

输出结果:>Student eat!

4:线程Thread类中匿名类的实现

(1)Thread类中run()方法实现

 1 public class InnerClass {
 2     public static void main(String[] args){
 3         Thread t = new Thread(){
 4             public void run(){
 5                 for(int i = 0; i < 5; i++){
 6                     System.out.println("x = " + i +";");
 7                 }
 8             }
 9         };
10         t.start();
11     }
12 
13 }

输出结果:

x = 0;
x = 1;
x = 2;
x = 3;
x = 4;

(2)使用Runnable接口进行实现

 1 public class InnerClass {
 2     public static void main(String[] args){
 3         Runnable r = new Runnable(){
 4             public void run(){
 5                 for(int i = 0; i < 5; i++){
 6                     System.out.println("x = " + i +";");
 7                 }
 8             }
 9         };
10         Thread t = new Thread(r);
11         t.run();
12     }
13 
14 }

运行结果和上面一样,通过Runnable的实例r,将Thread和Runnable联系在一起。

5:扩展:在Android开发中button实现OnClickListener()事件使用匿名内部类实现主要代码如下:

 1 /*
 2          * 初始化Button控件;
 3          * 设置Button的监听器,通过监听器实现点击操作的事情
 4          */
 5         loginButton = (Button)findViewById(R.id.button1);
 6         loginButton.setOnClickListener( new OnClickListener(){
 7             public void onClick(View args0){
 8                 System.out.println("欢迎您!");
 9             }
10         });

注意,整个OnClickListener()事件的实现均包含在setOnClickListener()方法中

Java---匿名类总结

标签:android   style   blog   color   io   ar   使用   java   for   

原文地址:http://www.cnblogs.com/graceting/p/4041531.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!