首页 > 其他 > 详细

匿名内部类

时间:2020-07-03 09:30:31      阅读:53      评论:0      收藏:0      [点我收藏+]

匿名类

内部类

内部类概述

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

内部类分类

  • 静态内部类:类似于静态变量

  • 实力内部类:类似于实例变量

  • 局部内部类:类似于局部变量

    class Test{
    //    该类在类的内部,所以称为内部类
    //    由于前面有static,所以称为“静态内部类”
        static class Inner1{
        }
    //   该类在类的内部,所以称为内部类
    //    没有static叫做实例内部类
        class Inner2{
        }
    
        public void doSome(){
    //        局部变量
            int a =10;
    //     该类在类的内部,所以称为内部类
    //        局部内部类
            class Inner3{
            }
        }
    }
    

内部类缺点

  • 使用内部类编写的代码,可读性很差,能不用尽量不用。

匿名内部类

匿名内部类概述

  • 匿名内部类是局部内部类的一种,因为这个类没有名字而得名,叫做匿名内部类。
  • 学习匿名内部类主要是以后在阅读别人写的代码时,能够理解。并不代表以后都要这样写,因为匿名内部类有两个缺点:
    • 缺点1:太复杂,太乱,可读性差。
    • 缺点2:类没有名字,以后无法重复使用。

代码演示

  • 没有使用内部类的代码
public class Test {
    public static void main(String[] args) {
        MyMath mm = new MyMath();
        mm.myMath(new ComputeImpl(),100,200);//100+200=300
    }
}

//负责计算的接口
interface Compute {
    //    抽象方法
    int sum(int a, int b);
}

//编写一个Compute接口的实现类
class ComputeImpl implements Compute {
//    对方法进行实现
    public int sum(int a, int b) {
        return a + b;
    }
}
class MyMath{
    public void myMath(Compute c, int x, int y){
        int retValue=c.sum(x,y);
        System.out.println(x +"+"+y+"="+retValue);
    }
}
  • 使用匿名内部类代码演示
 public class Test02 {
     public static void main(String[] args) {
         MyMath mm = new MyMath();
 //        使用匿名内部类
 //        这里表面上看上去好像是接口可以new了,实际上不是接口可以new了
 //        后面的{}代表了对接口的实现
 //        不建议使用匿名内部类,因为一个类没有名字,没有办法重复使用。
 //        另外代码太乱,可读性太差!
         mm.myMath(new Compute() {
             public int sum(int a, int b) {
                 return a + b;
             }
         }, 100, 200);
     }
 }
 
 //负责计算的接口
 interface Compute {
     //    抽象方法
     int sum(int a, int b);
 }
 class MyMath {
     public void myMath(Compute c, int x, int y) {
         int retValue = c.sum(x, y);
         System.out.println(x + "+" + y + "=" + retValue);
     }
 }

匿名内部类

原文:https://www.cnblogs.com/yxc-160206/p/13228188.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!