栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java匿名内部类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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个。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/632137.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号