首页 > 编程语言 > 详细

设计模式(6):JAVA(6):软件设计原则(6)里氏替换原则: 任何能用父类对象的地方,都能透明的使用子类替换

时间:2021-09-06 01:04:22      阅读:24      评论:0      收藏:0      [点我收藏+]

里氏替换原则: 任何能用父类对象的地方,都能透明的使用子类替换

ps:子类替换父类时,不能比父类的访问修饰更严格,不能抛出父类不存在的异常

使用时,需要考虑:

1.是否有is-a的关系

2.有is-a关系后,要考虑子类替换父类后会不会出现逻辑变化

反例

     class Counter  {
        public int add(int i,int j) {
            return i+j;
        }
    }
     class soonCounter extends Counter{
        @Override
        public int add(int i, int j) {
            return i-j;
        }
    }
    public static void main(String[] args) {
         Counter c = new Counter();
        System.out.println(c.add(100,200));
        //结果300
        Counter c = new soonCounter();
        System.out.println(c.add(100,200));
        //结果-100
    }

 我们要知道,在发生向上转型的过程时,方法的调用只和new的对象有关系,所以造成了不同的结果

使用里氏替换原则时,要知道 子类可以扩展父类的功能,但不能改变父类原有的功能

 

 

 

 

设计模式(6):JAVA(6):软件设计原则(6)里氏替换原则: 任何能用父类对象的地方,都能透明的使用子类替换

原文:https://www.cnblogs.com/qiu-hua/p/15227134.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!