Java匿名内部类

package com.qf.demo01;

//1.定义一个接口,抽象类
interface A{
	public void test();//抽象方法
	public void fun();
}
//2.实现类,实现这个接口
//class A1 implements A{
//
//	@Override
//	public void test() {
//		System.out.println("实现类A1,实现以下接口A中的test()。。。");
//	}
//}
public class Test1 {

	public static void main(String[] args) {
		//3.创建对象
//		A a = new A1();
//		a.test();
		
		//提示:如果说A1这个实现类只使用一次,也就是说,只创建一次对象。
		//匿名类:只要类,不要类名
		
		A a2 = new A(){//new,创建接口的匿名的实现类的对象。
			@Override
			public void test() {
				System.out.println("通过匿名内部类的方法实现来的。。");
			}

			@Override
			public void fun() {
				System.out.println("...");
			}
		}; //=右边干啥呢?创建对象:创建接口A的实现类的对象。
		a2.test();
		a2.fun();
		
		//=左边不变, 还是声明接口类型的引用
				//=右边,new 接口名 () {}
				//new-->创建对象
				//接口名 -- >创建哪个接口的实现类的对象
				//(),
				//{},指代接口A的实现类。
		
		//思考题:如果将一个接口作为一个方法的参数,可以直接创建一个匿名内部类的对象作为实参?
		
//		new A(){
//
//			@Override
//			public void test() {
//				
//			}
//			
//		}.test();//创建一个匿名内部类的匿名对象,调用方法。
		
	}

}

  

posted @ 2020-07-25 17:38  1769987233  阅读(129)  评论(0编辑  收藏  举报