里氏替换原则
1、子类必须完全实现父类的方法
2、子类可以有自己的个性
3、覆盖或实现父类的方法时输入参数可以被放大
4、覆写或实现父类的方法时输出结果可以被缩小
import java.util.Collection; import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { Son s = new Son(); HashMap hashMap = new HashMap(); System.out.println("**** 子类父类参数前置条件相同,覆写 ****"); s.doSth(hashMap); System.out.println("**** 子类参数前置条件比父类大,相当于方法重载 ****"); s.doSth1(hashMap); s.doSth1((Map)hashMap); System.out.println("**** 父类参数前置条件比子类大 ****"); s.doSth2(hashMap); s.doSth2((Map)hashMap); } } class Father{ public Father() { System.out.println("Father"); } public Collection doSth(HashMap map){ System.out.println("Father->doSth"); return map.values(); } public Collection doSth1(HashMap map){ System.out.println("Father->doSth1"); return map.values(); } public Collection doSth2(Map map){ System.out.println("Father->doSth2"); return map.values(); } } class Son extends Father{ public Son() { System.out.println("Son"); } public Collection doSth(HashMap map){ System.out.println("Son->doSth"); return map.values(); } public Collection doSth1(Map map){ System.out.println("Son->doSth1"); return map.values(); } public Collection doSth2(HashMap map){ System.out.println("Son->doSth2"); return map.values(); } }
运行结果:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。