匿名内部类的理解以及开发中的使用

1.理解

/*
	匿名内部类:
	 就是内部类的简化写法
	 
	 前提:存在一个类或者一个接口
			这个类可以是具体类,也可以是抽象类
			
	格式:
	new 类名或接口名(){
		重写方法;
	};
	
	本质是什么?
		是一个继承了该类或该接口的子类匿名对象
*/
interface Inter {
	public abstract void show();
	public abstract void show2();
}

class Outer{
	public void method(){
		/*-
		//一个方法
		new Inter(){
			public void show(){
				System.out.println("show");
			}
		}.show();
		*/
		
		//多个方法
		Inter i = new Inter(){
			public void show(){
				System.out.println("show");
			}
			
			public void show2(){
				System.out.println("show2");
			}
		};
		
		i.show();
		i.show2();
		
	}
}

class InterClassDemo5{
	public static void main(String[] args){
		Outer o = new Outer();
		o.method();
	}
}

2.开发中的使用

优点:使用后,对象立刻被回收,不占内存


/*
匿名内部类在开发中的应用
*/

interface Person{
	public abstract void Study();
}

class PersonDemo{
	//接口作为形势参数
	//其实这里是需要实现了该接口的子类对象
	public void method(Person p){
		p.Study();
	}
}

/*
class Student implements Person{
	public void Study(){
		System.out.println("好好学习,天天向上");
	}
}
*/

class InterClassDemo6{
	public static void main(String[] args){
		//PersonDemo pd = new PersonDemo();
		//Person p = new Student();
		//pd.method(p);
		
		PersonDemo pd = new PersonDemo();
		pd.method(new Person(){
			public void Study(){
			System.out.println("好好学习,天天向上2");
			}
		});
	}
}
发布了23 篇原创文章 · 获赞 7 · 访问量 2680

猜你喜欢

转载自blog.csdn.net/pengyujuan/article/details/104780549