匿名类

作者: 雨景江水 | 来源:发表于2020-09-26 10:28 被阅读0次

一.匿名类

/*

  • 抽象类的匿名子类

*/
public class PersonTest {

public static void main(String[] args) {
    
    method(new Student());//匿名对象
    
    Worker worker = new Worker();
    method1(worker);//非匿名的类非匿名的对象
    
    method1(new Worker());//非匿名的类匿名的对象
    
    System.out.println("********************");
    
    //创建了抽象类Person的一匿名子类的对象:p
    Person p = new Person(){

        @Override
        public void eat() {
            System.out.println("吃东西");
        }

        @Override
        public void breath() {
            System.out.println("好好呼吸");
        }
        
    };
    
    method1(p);
    System.out.println("********************");
    //创建抽象类Person匿名子类的匿名对象
    method1(new Person(){
        @Override
        public void eat() {
            System.out.println("吃好吃东西");
        }

        @Override
        public void breath() {
            System.out.println("好好呼吸新鲜空气");
        }
    });
}


public static void method1(Person p){
    p.eat();
    p.breath();
}

public static void method(Student s){
    
}

}

class Worker extends Person{

@Override
public void eat() {
}

@Override
public void breath() {
}

}

二.接口的匿名实现类

/*

  • 接口的使用
  • 1.接口使用上也满足多态性
  • 2.接口,实际上就是定义了一种规范
  • 3.开发中,体会面向接口编程!

*/
public class USBTest {
public static void main(String[] args) {

    Computer com = new Computer();
    //1.创建了接口的非匿名实现类的非匿名对象
    Flash flash = new Flash();
    com.transferData(flash);
    
    //2. 创建了接口的非匿名实现类的匿名对象
    com.transferData(new Printer());
    
    //3. 创建了接口的匿名实现类的非匿名对象
    USB phone = new USB(){

        @Override
        public void start() {
            System.out.println("手机开始工作");
        }

        @Override
        public void stop() {
            System.out.println("手机结束工作");
        }
        
    };
    com.transferData(phone);
    
    
    //4. 创建了接口的匿名实现类的匿名对象
    
    com.transferData(new USB(){
        @Override
        public void start() {
            System.out.println("mp3开始工作");
        }

        @Override
        public void stop() {
            System.out.println("mp3结束工作");
        }
    });
}

}

class Computer{

public void transferData(USB usb){//USB usb = new Flash();
    usb.start();
    
    System.out.println("具体传输数据的细节");
    
    usb.stop();
}

}

interface USB{
//常量:定义了长、宽、最大最小的传输速度等

void start();

void stop();

}

class Flash implements USB{

@Override
public void start() {
    System.out.println("U盘开启工作");
}

@Override
public void stop() {
    System.out.println("U盘结束工作");
}

}

class Printer implements USB{
@Override
public void start() {
System.out.println("打印机开启工作");
}

@Override
public void stop() {
    System.out.println("打印机结束工作");
}

}

二.创建Thread类的匿名子类的方式:https://www.bilibili.com/video/BV1Kb411W75N?p=420

package atguigu.exer;

/**

  • 练习:创建两个分线程,其中一个线程遍历100以内的偶数,另一个线程遍历100以内的奇数

  • @author shkstart

  • @create 2019-02-13 下午 2:16
    */
    public class ThreadDemo {
    public static void main(String[] args) {
    // MyThread1 m1 = new MyThread1();
    // MyThread2 m2 = new MyThread2();
    //
    // m1.start();
    // m2.start();

     //创建Thread类的匿名子类的方式
     new Thread(){
         @Override
         public void run() {
             for (int i = 0; i < 100; i++) {
                 if(i % 2 == 0){
                     System.out.println(Thread.currentThread().getName() + ":" + i);
    
                 }
             }
         }
     }.start();
    
    
     new Thread(){
         @Override
         public void run() {
             for (int i = 0; i < 100; i++) {
                 if(i % 2 != 0){
                     System.out.println(Thread.currentThread().getName() + ":" + i);
    
                 }
             }
         }
     }.start();
    

    }
    }

class MyThread1 extends Thread{
@Override
public void run() {
for (int i = 0; i < 100; i++) {
if(i % 2 == 0){
System.out.println(Thread.currentThread().getName() + ":" + i);

        }
    }

}

}

class MyThread2 extends Thread{
@Override
public void run() {
for (int i = 0; i < 100; i++) {
if(i % 2 != 0){
System.out.println(Thread.currentThread().getName() + ":" + i);

        }
    }

}

}

相关文章

  • 匿名类

    匿名类: 匿名类,就是没有名称的类,其名称由Java编译器给出,一般是形如:外部类名称+$+匿名类顺序,没有名称也...

  • 匿名类

    一.匿名类 /* 抽象类的匿名子类 */public class PersonTest { } class Wor...

  • 匿名类

    匿名类是一种即时继承现有类的方法。 例如,下面有一个类 Computer: class Computer { p...

  • java - 学习笔记

    日期 匿名类 lambda stringBuffer stringBuilder 定时 日期 匿名类 lambda...

  • 每日一点(1)

    匿名类 内部类 匿名内部类 匿名类(可以是接口 抽象类 普通类):1:无需创建对象2:直接重写方法 内部类:若一...

  • lambda 和 匿名内部类的区别 this

    this关键字 匿名类匿名类的this关键字指向匿名类 lambda表达式lambda表达式的this关键字指向包...

  • 2021-12-23 Spring中的ObjectFactory

    查看ObjectFactory的层次关系,发现有好几个匿名类: 这种匿名类也是子类(实现类)。

  • 匿名类,匿名内部类

    首先我们来看一下内部类的定义: 在一个类中定义另一个类,这样定义的类称为内部类。【包含内部类的类可以称为内部类的外...

  • 第十三章:匿名类

    PHP 7 开始支持匿名类。 匿名类很有用,可以创建一次性的简单对象。 可以传递参数到匿名类的构造器,也可以扩展(...

  • 7.10 匿名类

    匿名类和普通类一样,只是没有名字,它可以继承、实现接口、使用trait,以及拥有自己的成员属性。 如果外部类中的方...

网友评论

      本文标题:匿名类

      本文链接:https://www.haomeiwen.com/subject/lfrcuktx.html