以前很难理解抽象类怎么还可以实例化,后来发现自己理解错了,它是使用了匿名类的写法。
栗子:
//抽象类
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();