'); } '); } 匿名内部类 | Journey to paradise

匿名内部类


匿名内部类

内部类

要点

1、什么是内部类?
内部类:在类的内部又定义了一个新的类。被称为内部类。
2、内部类的分类:
    静态内部类:类似于静态变量
    实例内部类:类似于实例变量
    局部内部类:类似于局部变量
3、使用内都类编写的代码,可读性很差。能不用尽量不用。
4、匿名内都类是局部内部类的一种。
    因为这个类没有名字而得名,叫做匿名内都类。
5、学习匿名内部类主要是让大家以后在阅读别人代码的时候,能够理解。
   匿名内部类有两个缺点:
    缺点1:太复杂,太乱,可读性差
    缺点2:类没有名字,不能重复使用,只能用一次。

实例一

class Test{
    //静态变量
    static String country;

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

    //实例变量int age;

    //该类在类的内部,所以称为内部类
    //没有static叫做实例内部类
    class Inner2{}

    //方法
    public void dosome(){
        //局部变量
        int i=100;
        //该类在类的内部,所以称为内部类/局部内部类。
        class Inner3{}
    }
    public void doother{
        //dosome()方法中的局部内部类Inner3,在doother()中不能用
    }

    //main方法,入口
    public static void main(String[] args){

        MyMath mm = new MyMath();
        //使用匿名内部类
        //这里表面看上去好像是接口可以直接new了,实际上后面的{}代表了对接口的实现
        mm.mySum(new Compute(){
            public int sum(int a, int b){
                return a+b;
            }
        },200,300);
    }
}

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

//数学类
class MyMath{
    public void mySum(Compute c, int x, int y){
        int retvalue = c.sum(x,y);
        System.out.println(x + "+" + y + "=" + retvalue);
}

实例二

public class MyClass {
private  static  class InnerClass{
    //静态方法
    public  static  void m1(){
        System.out.println("静态内部类的m1方法执行");
    }
    //实例方法
    public  void  m2(){
        System.out.println("静态内部类中的实例方法执行");
    }
}

    public static void main(String[] args) {
        //静态方法执行直接通过类名调用
        MyClass.InnerClass.m1();

        //实例方法执行要创建对象
        MyClass.InnerClass mi=new MyClass.InnerClass();
        mi.m2();

        //Set集合中存储对象类型为InnerClass
        Set<MyClass.InnerClass> set1=new HashSet<>();

        //Set集合中存储对象类型为String
        Set<String> set2=new HashSet<>();
    }
}


文章作者: 涂爽
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 涂爽 !
评论
 上一篇
Object类中的方法 Object类中的方法
Object类中的方法 Object是JDK类库的根类,所有类都直接或间接继承了Object,下面简要介绍Object类中常用的的几个方法:String toString():将对象转
2021-09-23
下一篇 
浅谈java接口 浅谈java接口
浅谈java接口 示例一 要点 接口: 1、接口也是一种"引用数据类型"。编译之后是一个class字节码文件。 2、接口是完全抽象
2021-09-15
  目录