Java中匿名内部类的语法及使用

Java中匿名内部类的语法及使用:

1、内部类:

什么是内部类?
在类的内部又定义了一个新的类,称为内部类。

内部类的分类:
静态内部类:类似于静态变量。
实例内部类:类似于实例变量。
局部内部类:类似于局部变量。

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

测试代码

class A {
    //静态内部类
    static class Inner1 {

    }
    //静态变量
    static String country = "China";

    //实例内部类
    public class Inner2 {

    }
    //实例变量
    String name;

    //方法内定义的类,局部的
    public void doSom() {
        //局部内部类
        class Inner3 {

        }
        //局部变量
        int n;
    }
}

2、匿名内部类:

属于局部内部类的一种,这个类没有名字,故得名:匿名内部类。

理解匿名内部类主要是让我们以后在阅读别人代码的时候,能够看得懂,实际上自己写代码时很少使用。

为什么不建议使用匿名内部类?因它为有两个缺点:
缺点1:太复杂混乱,可阅读性差;
缺点2:类没有名字,以后想重复使用,却不能用。


3、用匿名内部类完成接口了的实现
也就在这方面能够看得到匿名内部类了。

测试代码:

public class Test02 {
    public static void main(String[] args) {
        //要求:用People对象的sum()方法计算a + b
        People p = new People();

        //第一种:借助实现类MyMath
        Compute c = new MyMath();
        int result1 = p.sum(c, 10, 20);
        System.out.println(result1);  //输出:30

        //第二种:使用匿名内部类
        int result2 = p.sum(new Compute() {
            public int add(int x, int y) {
                return x + y;
            }
        }, 20, 30);
        System.out.println(result2);  //输出:50
    }
}

//计算的接口
interface Compute {
    //抽象方法
    int add(int x, int y);
}

//MyMath类,实现计算接口
class MyMath implements Compute {
    //实现接口中的抽象方法
    public int add(int x, int y) {
        return x + y;
    }
}

class People {
    public int sum(Compute c, int x, int y) {
        return c.add(x, y);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值