以前很难理解抽象类怎么还可以实例化,后来发现自己理解错了,它是使用了匿名类的写法。
栗子:
//抽象类 public abstract class Red { public abstract void draw(); } //匿名类的使用 Red red = new Red() { @Override public void draw() { Log.v("-->", "Draw"); } };
以上代码等价于:
//抽象类 public abstract class Red { public abstract void draw(); } //继承抽象类 public class RedChild extends Red { @Override public void draw() { Log.v("-->", "Draw"); } } //实体类的使用 RedChild redChild = new RedChild(); redChild.draw();
原文地址:http://blog.csdn.net/pengkv/article/details/45481971