匿名内部类在创建多线的使用

匿名内部类 (new runnable)

1. 解释:

  • 没有名字

  • 内部的类

  • 只使用一次

  • 前提条件:必须继承一个父类,或者implements 一个 接口 interface

 

2. 实例:

 

Demo1:

abstract class Person {
   public abstract void eat();
}

class Child extends Person {
   public void eat() {
       System.out.println("eat something");
  }
}

public class Demo {
   public static void main(String[] args) {
       Person p = new Child();
       p.eat();
  }
}

 

如果Child类使用一次,将变得多余,可以改为如下代码

abstract class Person {
   public abstract void eat();
}

public class Demo {
   public static void main(String[] args) {
       new Person(){
           public void eat() {
               sout("eat !!!");
          }
      }.eat();
  }
}

 

 

Demo2:

 

interface Person {
   public void eat();
}

public class Demo {
   public static void main(String[] args) {
       new Person(){
           public void eat() {
               sout("eat !!!");
          }
      }.eat();
  }
}

此处 new Person( )看似实例化了一个接口,事实并非如此,接口式的匿名内部类是实现了一个接口的匿名类。而且只能实现一个接口。

 

Demo3:

new Thread() {
           public void run() {
               for (int i = 1; i <= 5; i++) {
                   System.out.print(i + " ");
              }
          }
}.start();

 

Demo4:

new Thread(new Runnable() {

@Override
public void run() {
int i=0;
while(true){
i++;
System.out.println("this is 线程"+i);
}


}
}).start();

 

posted @ 2021-03-09 10:34  大D同学  阅读(54)  评论(0)    收藏  举报