Java 匿名内部类【重点】

一、匿名内部类

1、匿名内部类 :是内部类的简化写法。它的本质是一个带具体实现的 父类或者父接口的 匿名的 子类对象。

开发中,最常用到的内部类就是匿名内部类了。以接口举例,当你使用一个接口时,似乎得做如下几步操作,

  1. 定义子类
  2. 重写接口中的方法
  3. 创建子类对象
  4. 调用重写后的方法

我们的目的,最终只是为了调用方法,那么能不能简化一下,把以上四步合成一步呢?匿名内部类就是做这样的快捷方式。

前提

匿名内部类必须继承一个父类或者实现一个父接口。

格式

2、使用方式

以接口为例,匿名内部类的使用,代码如下:

定义接口:

public interface A {
          
     
    public void test();  
}

创建B类实现接口A:

public class B implements A {
          
     
    @Override  
    public void test(){
          
     
        System.out.println("b实现a接口");  
    }  
}

创建匿名内部类,并调用:

public class TestB {
          
     
    public static void main(String[] args) {
          
     
    
//第一种: 没有使用匿名内部类 直接创建A接口的子类对象再调用方法  
//      A a = new B();  
//        a.test();  

//第二种: 使用匿名内部类直接重写方法 接着调用
//        A a = new A() {  
//  
//            @Override  
//            public void test() {  
//                System.out.println("b实现接口a");  
//            }  
//        };  
//        a.test(); 

//第三种: 在方法的形式参数是接口或者抽象类时,也可以将匿名内部类作为参数传递。代码如下:
//		  showA(a);

//第四种: 将第二种和第三种方法化简如下
        showA(new A() {
          
     
            @Override  
            public void test() {
          
     
                System.out.println("b实现接口a");  
            }  
        });  
  
  
    }  
    public static void showA(A a){
          
     
       
        a.test();  
    }  
}
经验分享 程序员 微信小程序 职场和发展