[Java]匿名内部类

为什么会有匿名内部类?

对于抽象类来说,需要一个子类来继承他,并实现它的方法

但在一些场合里,这个子类可能只需要使用一次,这样单独写一个子类出来有点多余,就可以使用匿名内部类来实现


最顶层的父

中间的子

最下的实例


匿名内部类就是可以把中间这一步省去



使用场合较多的就是多线程的实现,因为他要继承thread类,或者实现runnable接口,当然接口也是可以使用匿名内部类


以接口方式为例:


最上的父:系统已经定义好了 接口Runnable(),


中间的子:MyThread   实现父类

public class MyThread implements Runnable{

		@Override
		public void run() {
			// TODO Auto-generated method stub
			
		}
		
	}

最下的实例

public class ThreadMain{
      public static void main(String[] args){
    	  //实例化
    	  MyThread myRunnable = new MyThread();
    	  //创建线程
    	  Thread thread = new Thread(myRunnable);
    	  //启动
    	  thread.start();
      }
	}


那么使用匿名内部类来实现就更简单了,省去中间创建子类这一步

public class ThreadMain{
      public static void main(String[] args){
          //没有去创建一个子类再实例化
    	  //new Runnable(){}; 实现Runnable的类的对象,赋给r
    	   Runnable r = new Runnable(){
    		   public void run(){
    			   
    		   }
    	   };
    	  //把这个对象的引用,拿来创建线程
    	  Thread thread = new Thread(r);
    	  //启动
    	  thread.start();
      }
	}


当然这里有更简便的写法。把线程的声明和启动一条龙写成链式的:

private void update() {
		new Thread(new Runnable(){  		  
            @Override  
            public void run(){
            	
            }
	     }).start();
	}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值