1. 程式人生 > >Java匿名內部類(通過繼承抽象類來實現)

Java匿名內部類(通過繼承抽象類來實現)

3. 匿名內部類

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

3.1 匿名內部類特性

1. 匿名內部類總是預設實現某個介面或繼承某個抽象類。

2.不能有構造方法,只能有一個例項。

3. 不能定義在任何靜態成員、靜態方法。

4. 不能是public.protected.private static.

5. 匿名內部類為區域性的,所以區域性內部類的所有限制都對其有效。

3.2  匿名內部類的使用方式

一、繼承式的匿名內部類: 就是new 抽象類。

示例:

package 匿名內部類抽象類練習;

public abstract class Tv {
	//開啟電視
	public abstract void open();
	
	//關閉電視
	public abstract void close();
	
	//換臺
	public abstract void turn();
}
package 匿名內部類抽象類練習;

public class Summer {
	public static Tv extendsTv() {
		Tv tv = new Tv() {

			@Override
			public void open() {
				System.out.println("開啟三星電視...");
				
			}

			@Override
			public void close() {
				System.out.println("關閉三星電視...");
				
			}

			@Override
			public void turn() {
				System.out.println("對三星電視進行換臺...");
				
			}
			
		};
		
		//tv.open();
		//tv.close();
		//tv.turn();
		return tv;
	}
}
package 匿名內部類抽象類練習;

public class XiaoMi {
	public static Tv extendsTv() {
		//匿名內部類... 抽象類的實現 ...
		Tv tv = new Tv() {

			@Override
			public void open() {
				System.out.println("開啟小米電視...");
				
			}

			@Override
			public void close() {
				System.out.println("關閉小米電視...");
				
			}

			@Override
			public void turn() {
				System.out.println("對小米電視進行換臺...");
				
			}
			
		};
		
		//tv.open();
		//tv.close();
		//tv.turn();
		
		return tv;
	}
}
package 匿名內部類抽象類練習;

public class Test {
	public static void main(String[] args) {
		Tv xiaomi = XiaoMi.extendsTv();
		xiaomi.open();
		xiaomi.turn();
		xiaomi.close();
		
		System.out.println("------------------------------");
		
		Tv summer = Summer.extendsTv();
		summer.open();
		summer.turn();
		summer.close();
	}
}