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();
	}
}

 

你可能感兴趣的:(Java)