认识匿名内部类,以及使用

匿名内部类

匿名内部类是啥

简单来说没得名字的内部类,叫匿名内部类

匿名内部类怎么使用呢

前提

  1. 需要一个类/接口,这里的类可以为具体类也可以是抽象类

格式

new 类名/接口(){
    重写方法;
};
  1.  new intger(){
            public void show(){
            }
        };
    

如何实现呢

创建一个接口
public interface inter(){
    void show();
}
创建一个实现类
public class testDemo {
    
    public void method(){
        
        new inter(){
            //重写方法
            public void show(){
                System.out.println("匿名内部类");
            }
        };
        
    }
}
创建一个测试类
  1. 需要创建一个实现类的对象
public class test{
    public static void main(String[] args){
        testDemo td = new testDemo();
        td.method();
    }
}

运行如下:

C:\Users\yzz\AppData\Roaming\Typora\typora-user-images\1612940812213.png

 System.out.println("匿名内部类");

这个输出语句没有因为我们没有调用**show();**方法。

怎么调用呢

说明:匿名内部本质是一个继承了该类或者实现了该接口的子类匿名对象。所以可以用对象调用方法

    new inter(){
            //重写方法
            public void show(){
                System.out.println("匿名内部类");
            }
        }.show();

运行如下
在这里插入图片描述

多态的形式去实现

实现类的对象,使用多态

public class testDemo {
    
    public void method(){
        
       interi = new inter(){
            //重写方法
            public void show(){
                System.out.println("匿名内部类");
            }
        };
        i.show();
        i.show();
    }
}

运行如下:
在这里插入图片描述

练习

创建一个接口,定义两个方法

public interface inter{
    void show();
    void test();
}

创建一个接口操作类

public class jumppingOperator{
    public void method(inter inter){
        inter.show();
        inter.test();
    }
}

创建一个测试类

public class jumppingDemo{
    public static void main(String[] args){
        
      jumppingOperator jo = new jumppingOperator();
        jo.method(new inter(){
            public void show(){
                System.out.println("玩");
            }
            public void test(){
                System.out.prinln("看");
            }
        });
        
    }
}

运行如下:
在这里插入图片描述

可以多重使用

        jo.method(new inter() {
            @Override
            public void show() {
                System.out.println("玩");
            }

            @Override
            public void test() {
                System.out.println("看");
            }
        });
        jo.method(new inter() {
            @Override
            public void show() {
                System.out.println("我");
            }

            @Override
            public void test() {
                System.out.println("你");
            }
        });

运行如下:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值