1.设计可以复用的类
(1)behavioral subtyping和LSP原则
LSP原则:子类型可以增加方法,但是不可删除;
子类型需要重写的方法必须有相同或子类型的返回值(协变)
子类型中重写的方法必须使用相同类型的参数(逆变)
子类型中重写的方法不能抛出额外的异常
更强的不变量和Rep
协变:类型向下
逆变:类型向上
泛型中的LSP:extend是顺位,super是逆位
(2)