Java 匿名内部类

鳄鱼君

发表文章数:642

热门标签

, ,

Vieu四代商业主题

高扩展、安全、稳定、响应式布局多功能模板。

¥69 现在购买
首页 » Java » Java 匿名内部类

内部类:在类的内部又定义了一个新的类
内部类分类:静态内部类,类似内部变量;实例内部类,类似于实例变量;局部内部类,类似于局部变量
匿名内部类

public class Test01 {
    // 静态内部类
    static class Inner1{}
    // 实例内部类
    class Inner2{}
    // 方法
    public void doSome(){
        int i = 10;
        // 局部内部类
        class Inner3{}
    }
}

使用内部类编写的代码,可读性很差,所以尽量不要用

public class Test01 {
    public static void main(String[] args) {
        BoBo a = new BoBo();
        DoSome b = new SumReal();
        a.mySum(b, 100, 200);
    }
}
// 接口
interface DoSome{
    // 抽象方法
    int sum(int a, int b);
}
// 接口的实现类
class SumReal implements DoSome{
    // 对方法的实现
    public int sum(int a, int b){
        return a + b;
    }
}

// 求和类
class BoBo{
    // 求和方法
    public void mySum(DoSome c, int a, int b){
        int resValue = c.sum(a,b);
        System.out.println(a + "+" + b + "=" + resValue);
    }
}

以上代码没有使用匿名内部类,我们需要编写实现接口的实现类,现在使用匿名内部类:

public class Test01 {
    public static void main(String[] args) {
        BoBo a = new BoBo();
        // 使用匿名内部类,表示类没有名字
        // 这里的接口表面上是可以直接new,实际上不是
        // 后面的{} 代表对接口的实现
        a.mySum(new DoSome(){
            public int sum(int a, int b){
                return a + b;
            }
        }, 100, 200);
    }
}
// 接口
interface DoSome{
    // 抽象方法
    int sum(int a, int b);
}

// 求和类
class BoBo{
    // 求和方法
    public void mySum(DoSome c, int a, int b){
        int resValue = c.sum(a,b);
        System.out.println(a + "+" + b + "=" + resValue);
    }
}

但是不建议使用匿名内部类,因为一个类没有名字,没有办法重复使用,代码太乱,可读性太差!

未经允许不得转载:作者:鳄鱼君, 转载或复制请以 超链接形式 并注明出处 鳄鱼君
原文地址:《Java 匿名内部类》 发布于2020-08-11

分享到:
赞(0) 赏杯咖啡

评论 抢沙发

9 + 8 =


文章对你有帮助可赏作者一杯咖啡

支付宝扫一扫打赏

微信扫一扫打赏

Vieu4.6主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。
切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录
切换登录

注册