0
点赞
收藏
分享

微信扫一扫

匿名内部类 #yyds干货盘点#

匿名内部类

匿名内部类:没有名称的类,主要用来创建对象(只创建一次)
匿名内部类需要通过父类或者接口实现。
语法:

父类名/接口名 对象名 = new 父类名/接口名 {
   重写的父类的方法
   或
   实现的接口中的方法
};

示例1:普通父类

  • 父类:
public class A {
    public void fun(){
        System.out.println("A fun");
    }
}
  • 测试代码:
public static void main(String[] args) {
    class B1 extends  A{

    }
    B1 obj1 = new B1();
    obj1.fun();

    class B2 extends  A{
        @Override
        public void fun() {//重写父类的方法
            System.out.println("B2 fun");
        }
    }
    B2 obj2 = new B2();
    obj2.fun();

    ////////////////////////////////

    A obj11 = new A(){

    };
    obj11.fun();

    A obj22 = new A(){
        @Override
        public void fun() {
            System.out.println("22 fun");
        }
    };
    obj22.fun();

    new A(){
        @Override
        public void fun() {
            System.out.println("33 fun");
        }
    }.fun();
}

示例:抽象父类

  • 抽象父类:
public abstract class CC {
    public void fun() {
        System.out.println("fun");
    }
    public abstract void fun2();
}
  • 测试代码:
public static void main(String[] args) {
    CC obj = new CC() {

        public void fun2() {
            System.out.println("xixi");
        }

    };
    obj.fun2();

    new CC() {

        public void fun2() {
            System.out.println("xixi");
        }

    }.fun2();
}
  • 示例:接口

  • 接口:
public interface A {
     void fun();
}
  • 测试代码:
public static void main(String[] args) {

    class B2 implements A {
        @Override
        public void fun() {//重写父类的方法
            System.out.println("B2 fun");
        }
    }
    B2 obj2 = new B2();
    obj2.fun();

    ////////////////////////////////

    A obj22 = new A() {
        @Override
        public void fun() {
            System.out.println("22 fun");
        }
    };
    obj22.fun();

    new A() {
        @Override
        public void fun() {
            System.out.println("33 fun");
        }
    }.fun();
}
举报

相关推荐

0 条评论