JAVA进阶开发之(内部类概述)

这篇博客主要介绍了JAVA中的内部类,包括静态内部类、实例内部类和局部内部类的分类。重点讲解了匿名内部类的概念,指出其由于没有名字导致的不可重复使用和代码可读性差的问题,并提供了代码演示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

匿名内部类(相当于此类没有名字):

1.什么是内部类:在类的内部又定义了一个新的类

2.内部类的分类:

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

实例内部类:类似实例变量

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

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

4.匿名内部类是局部内部类中的一种,因为这个类没有名字而得名,叫匿名内部类

5.不建议使用匿名内部类:因为一个类没有名字,就意味着没有办法重复使用,另外代码会太乱,可读性就会很差

6.匿名内部类的特征:new 接口名(){}  后面的{} 代表了对接口的实现

 

代码演示:

import java.util.Objects;

/*


 */
class Test01{

    //静态内部类
    static class Inner1{

    }

    //实例内部类
    class Inner2{

    }


    public void doSome(){
    //局部内部类
        class Inner3{

        }
    }

    public void doOther(){
        //外面的方法访问不了上面的局部内部类,访问实例内部类的时候需要new[但是我们一般很少这样去使用]
        new Test01().new Inner2();
    }

    //main方法的入口
    public static void main(String[] args){
        //调用Math中的mySum方法
        Math math=new Math();

        //这样写代码,表示这个类名是有的,类名是ComputeImpl
        //math.mySum(new ComputeImpl() ,100,100);

        //使用匿名内部类,这个{}就代表对这个接口的实现,表示这个ComputeImpl这个类没名字了
        math.mySum(new Compute(){
            public int sum(int a,int b) {
                return a + b;
            }
        } ,100,100);
    }
}

//负责计算的接口
interface Compute{
    //抽象方法
    int sum(int a,int b);
}
/*
//你会自动在这里编写一个Compute接口的实现类
class ComputeImpl implements Compute{
    public int sum(int a,int b){
        return a+b;
    }
}
*/

//数学类
class Math{
    //数学求和的方法
    public void mySum(Compute compute,int x,int y){
        int retValue=compute.sum(x,y);
        System.out.println(x+"x"+y+"y"+"="+retValue);
    }
}




 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值