内部类

本文详细介绍了Java中的内部类,包括静态内部类、实例内部类和局部内部类,重点讲解了匿名内部类的概念和使用场景。虽然匿名内部类可读性较差且无法重复使用,但在实际编程中常用于简洁地实现接口或抽象类的快速实例化。文章通过实例展示了如何创建和使用匿名内部类,并强调其主要用途在于理解他人代码。
摘要由CSDN通过智能技术生成

目录

 

分类

什么是匿名内部类


分类

内部类分为实例内部类类似于实例变量,局部内部类类似于局部变量,静态内部类类似于静态变量,匿名内部类是没有类名的属于局部内部类。在以后用得最多的是匿名内部类,因此最主要讲解匿名内部类。

                                  实例变量(全局变量),局部变量,静态变量的解释:https://blog.csdn.net/csdn_yaohailong/article/details/101375754

内部类例子如下

public class Test{
    public static void main(String[] args) {

    }
}
class Test01{
    //在该类的内部所以叫做内部类
    //由于前面有static,所以称为“静态内部类”
    static class Inner1{

    }
    //在类内部所以叫做内部类
    //由于前面没有static,所以叫做实例(全局)内部类
    class Inner02{

    }
    //在类内部所以叫做内部类
    //在这个方法体里面生效所以叫做局部内部类
    public void dosome(){
        class Inner03 {

        }
    }
    public void doother(){
        //如果要使用一个类中的内部类,必须先把外面的类new出来,然后new内部类。
        //在doother中无法使用Inner03类,因为Inner03类的作用域是dosome方法
        new Test01().new Inner02();
        new Test01().new Inner03();//这个语句编译报错。
    }
}

什么是匿名内部类

1.什么是内部类?

内部类:在类的内部又定义了一个新的类。

2.使用内部类编写的代码,可读性很差,能不用就不用。而匿名内部类,可读性差,而且因为没有类名,无法重复使用。

3.匿名内部类是局部内部类的一种,什么是匿名内部类呢?因为这个类没有名字而得名。学习匿名内部类最主要是让大家阅读别人代码的时候能够理解,并不代表以后建议大家这样写。

因为匿名内部类有两大缺点:可读性差,没有类名无法重复使用。(建议喜欢装b的人使用)

//匿名内部类是一种用来装逼的东西,使代码看起来更加高端。然而就是一个废物。
 public class Test{
    public static void main(String[] args) {
     MyMath m = new MyMath();
     //这样写代码,表示这个类名是有的,类名是computeiml
     //m.sum(new computeiml(),12,1);
        // 使用匿名内部类,表示这个computeimp这个类没有名字。
        //这里表面上看上去好像是接口可以直接可以new了,实际上接口是不可以new的
        //new compute()后面的{}代表了对接口的实现只是没有了类名。
        //不建议使用匿名内部类,因为一个类没有名字无法重复使用,而且代码太乱可读性太差
        //但是有些人非要这样写,因为代码看上去很高端。
     m.sum(new compute() {
         @Override
         public int sum(int a, int b) {
             return a + b;
         }
     },12,1);
    }
}
//负责计算的接口
interface compute{
    int sum(int a, int b);
}
/*
class computeiml implements compute{
    @Override
    public int sum(int a, int b) {
        return a +b;
    }
}
 */
class MyMath{
    public void sum(compute c,int x,int y){
        int re = c.sum(x,y);
        System.out.println(re);
    }
}

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值