Java 匿名内部类解析

匿名内部类:

1. 什么是内部类?

内部类:在类的内部又定义了一个新的类,被称为内部类

2. 内部类分类:

  • 静态内部类:类似于静态变量
  • 实例内部类:类似于实例变量
  • 局部内部类:类似于局部变量
package Day0223.Demo01;
public class Test01 {
   //在类的内部且前面有static,所以被称为静态内部类
   static class Inner1{

   }
   //在类的内部且前面没有有static,所以被称为实例内部类
   class Inner2{

   }
   public void dosome(){
       //局部变量
       int i = 3;
       //该类在类的内部,所以被称为内部类
       //局部内部类
       class Innne3{

       }
   }
}

3. 使用内部类编写代码可读性差,能不用尽量不用!

4. 匿名内部类是内部类的一种,

因为该类没有名字而得名,因此被称为匿名内部类
  • 使用匿名内部类,表示这个ComputeImpl这个类没名字了
  • 相当把ComputeImpl实现类{}的内容写在了new Computer(){}
  • 但是不建议使用匿名内部类
  • 因为一个类没有名字,无法重复使用,而且代码太乱,可读性差
public class Test01 {
    public static void main(String[] args) {
        MyMath mm = new MyMath();
        //使用匿名内部类,表示这个ComputeImpl这个类没名字了
        //相当把ComputeImpl实现类{}的内容写在了new Computer(){}
        //但是不建议使用匿名内部类
        //因为一个类没有名字,无法重复使用,而且代码太乱,可读性差
        mm.mySum(new Computer() {
            @Override
            public int sum(int a, int b) {
                return 0;
            }
        }, 100, 200);
    }
}
//负责计算的接口
interface Computer{
    //抽象方法
    int sum(int a, int b);
}
//需自行写实现类
/*class ComputerImpl implements Computer{
    @Override
    public int sum(int a, int b) {
        return a+b;
    }
}*/
//数学类
class MyMath{
    //数学求和方法
    public void mySum(Computer c,int x,int y){
        int reValue =c.sum(x, y);
        System.out.println(x+"+"+y+"="+reValue);
    }
}

5. 知道匿名内部类这回事即可,因为匿名内部类不常用

缺点:
1.代码杂乱,可读性差
2.类没有名字,无法重复使用

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值