java匿名内部类

Java匿名内部类

什么是匿名内部类?
通俗的可以理解成没有名字的内部类,不知道叫啥的类
匿名内部类像匿名对象一样,只会执行一次
那么,匿名内部类应该怎么用呢?
假如,有一个Animal的抽象类,里面包含了动物的声音。不同的动物,声音不一样,所以又创建了一个type类,如:

abstract class Animal{
	public abstract void yell();
}//包含了所有动物叫声的抽象类

class type{
	private String name;
	type(String name){
		this.name=name;
		System.out.println("dog="+name);
	}
	public String getName() {
		return name;
	}
	class dog extends Animal{
		public void yell() {
			System.out.println("嗷呜~");
		}
	}//创建了类型为小狗的内部类,并且继承了抽象类
}

然后进行测试:

public class ExceptionDemo3 {
	public static void main(String[] args) {
		type.dog d1 = new type("狗").new dog();
		d1.yell();
	}
}

在这里插入图片描述
如果用匿名内部类写的话,可以想象成要写一个很胖的匿名对象

class type{
	private String name;
	type(String name){
		this.name=name;
		System.out.println("dog="+name);
	}
	public String getName() {
		return name;
	}
}
public class ExceptionDemo3 {
	public static void main(String[] args) {
		new Animal() {
			public void yell() {
				System.out.println("miaomaio");
			}
		}.yell();
		new type("猫");
	}
}

测试结果:
在这里插入图片描述
直接在测试类中new一个Animal的对象,但是,这个对象因为是抽象的,所以必须要把里面的yell方法覆写
其实就是一个多态:
Animal 对象名称 = new cat();对象名称.yell();

总结:
1,匿名内部类就是内部类的简化格式
2,定义匿名内部类必须要继承一个类,或实现一个接口(非特殊的类也可以用,但是没必要)
3,匿名内部类的格式:new 父类或者接口(){定义子类的内容}
4,其实匿名内部类就是一个匿名子类对象,而且,这个对象有点胖。可以理解为带内容的对象
5,匿名内部类中定义的方法最好不要超过3个。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

番茄上的Tomato

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

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

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

打赏作者

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

抵扣说明:

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

余额充值