标签:
/*
  匿名内部类
	  就是内部类的简化写法。
  前提:存在一个类或者接口
	  这里的类可以是具体类也可以是抽象类。
格式:
	  new 类名或者接口名(){
		  重写方法;
	  }
	
  本质是什么呢?
	   是一个继承了该类或者实现了该接口的子类匿名对象。
*/
//接口 Study
interface Study {
	  public abstract void read();
	  public abstract void write();
}
//抽象类 Play
abstract class Play {
	  public abstract void kongfu();
}
//Hulk 实现 接口Study
class Hulk implements Study {
	  public void read() {
		    System.out.println("i can read");
	  }
	  public void write() {
		    System.out.println("i can write");
	  }
}
//Pander继承抽象类Play
class Pander extends Play{
	  public void kongfu(){
		    System.out.println("i love kongfu");
	  }
}
public class AnonymousInnerClass {
	  public static void main(String[] args) {
		  // 方法一:不使用匿名内部类
		  //如果只使用一次,创建继承类和实现类就太浪费内存了,所以匿名内部类适用只使用一次的情况。
		  Study s = new Hulk();
		  s.read();
		  s.write();
		
		  Play p = new Pander();
		  p.kongfu();
		  System.out.println("------------\n");
		
		  //方法二:使用匿名内部类
		  new Study(){
			    public void read() {
				      System.out.println("i can read");
			    }
			    public void write() {
				      System.out.println("i can write");
			    }
		  }.read();
		
		  new Study(){
			    public void read() {
				      System.out.println("i can read");
			    }
			    public void write() {
				      System.out.println("i can write");
			    }
		  }.write();
		
		  new Play(){
			    public void kongfu(){
				      System.out.println("i love kongfu");
			    }
		  }.kongfu();
		
		  System.out.println("------------\n");
		  //方法三:匿名内部类的另一种简化写法
		
		  Study ss= new Study(){
			    public void read() {
				      System.out.println("i can read");
			    }
			    public void write() {
				      System.out.println("i can write");
			    }
		  };
		  ss.read();
		  ss.write();
		
		  Play pp =new Play(){
			    public void kongfu(){
				      System.out.println("i love kongfu");
			    }
		  };
		  pp.kongfu();
		
}
}
-------------------------------------------------------------------------------------------------------

标签:
原文地址:http://www.cnblogs.com/vmkash/p/4833891.html