匿名內部類的使用總結


匿名內部類也就是沒有名字的內部類

正因為沒有名字,所以匿名內部類只能使用一次,它通常用來簡化代碼編寫

但使用匿名內部類還有個前提條件:必須繼承一個父類或實現一個接口

public class innerclassDemo {

	public static void main(String[] args) {
		/**
		 * 1.匿名內部類,用在父類是個抽象類的情況
		 * (1)Person 是一個抽象類 ,直接在實例中定義一個方法say();
		 */
		Person person = new Person() {
			
			@Override
			public void say() {
				System.out.println("hello china!!");
				
			}
		};
		
		person.say();
		
		/**
		 * (2)子類繼承Person類,實現say()方法。
		 */
		Person person2 = new Men();
		person2.say();
		
		/**
		 * 2.匿名內部類,用在父類是個接口的情況
		 * (1)InterfacePersonDemo是個接口,直接在實例中定義一個方法eat();
		 */
		InterfacePersonDemo interfacePerson = new InterfacePersonDemo() {
			
			@Override
			public void eat() {
				System.out.println("I like eat bread!!");
				
			}
		};
		
		interfacePerson.eat();
		/**
		 * (2) Woman類實現了InterfacePersonDemo接口,實現內部eat方法。
		 */
		InterfacePersonDemo interfacePerson2 = new Woman();
		interfacePerson2.eat();
		
		
		/**
		 * 3.匿名內部類,用在父類是個可以被繼承的情況,父類不能使final的
		 */
		Animal animal = new Animal(){

			@Override
			public void drink() {
				System.out.println("drink a water!");
				
			}
			
			
		};
		animal.drink();
		
		/***
		 * 正常使用
		 */
		Animal animal2 = new Dog();
		animal2.drink();
		
	}

}

//可以被繼承的父類
class Animal{
	public void drink() {}
}

//繼承父類
class Dog extends Animal{

	@Override
	public void drink() {
		System.out.println("i like water!");
		
	}
	
}


//抽象父類
abstract class Person{
	public abstract void say();
	
}
//繼承抽象父類類
class Men extends Person{

	@Override
	public void say() {
		System.out.println("I am a men!!");
		
	}
	
	
}
//接口
interface InterfacePersonDemo{
	public abstract void eat();
	
	
}
//實現接口
class Woman implements InterfacePersonDemo{

	@Override
	public void eat() {
		System.out.println("i eat a bread!");
		
	}
	
}


  

由上面的例子可以看出,只要一個類是抽象的或是一個接口,或者可以被繼承且可重寫里面方法的父類,那么其子類中的方法都可以使用匿名內部類來實現方法或者創造方法。

最常用的情況就是在多線程的實現上,因為要實現多線程必須繼承Thread類或是繼承Runnable接口

 

可以參考下面博客:http://www.cnblogs.com/nerxious/archive/2013/01/25/2876489.html


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com