匿名内部类

匿名内部类

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

父类名/接口名 对象名 = 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();
}
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梁云亮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值