匿名内部类

匿名内部类:代码简洁,可以同时声明和实例化

https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html
1.

While local classes are class declarations, anonymous classes are expressions, which means that you define the class in another expression. The following example, HelloWorldAnonymousClasses, uses anonymous classes in the initialization statements of the local variables frenchGreeting and spanishGreeting, but uses a local class for the initialization of the variable englishGreeting:

示例:

public class AnonymousExemple {
	
	interface HelloWorld{
		public void method1();
		public void method2(String value);
	}
	
	public void sayHello(){
		
		class LocalClass implements HelloWorld{
			String name = "LocalClass";
			public void method1() {
				method2(name)	;
			}
			public void method2(String value) {
				name = value ;
				System.out.println("hello "+name);		
			}		
		};
		
		LocalClass localClass = new LocalClass();
		
		HelloWorld anonymousClassOne = new HelloWorld(){
			String name = "anonymousClassOne";
			public void method1() {
				method2(name);
			}
			public void method2(String value) {
				name = value ;
				System.out.println("hello "+name);		
			}		
		};
		
		
		HelloWorld anonymousClassTwo = new HelloWorld(){
			String name = "anonymousClassTwo";
			public void method1() {
				method2(name);
			}
			public void method2(String value) {
				name = value ;
				System.out.println("hello "+name);		
			}		
		};
		
		localClass.method1();
		anonymousClassOne.method1();
		anonymousClassTwo.method1();
	}
	public static void main(String[] args) {
		
		AnonymousExemple a = new AnonymousExemple();
		a.sayHello();
	}

}

运行结果:

hello LocalClass
hello anonymousClassOne
hello anonymousClassTwo

匿名内部类语法:
操作符:new;
一个要实现的接口或要继承的类,案例一中的匿名类实现了HellowWorld接口,案例二中的匿名内部类继承了Animal父类;
一对括号,如果是匿名子类,与实例化普通类的语法类似,如果有构造参数,要带上构造参数;如果是实现一个接口,只需要一对空括号即可;
一段被"{}“括起来类声明主体;
末尾的”;"号(因为匿名类的声明是一个表达式,是语句的一部分,因此要以分号结尾)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值