您当前的位置: 首页 >  Java

小志的博客

暂无认证

  • 0浏览

    0关注

    1217博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

java设计模式——里氏代换原则

小志的博客 发布时间:2020-05-05 12:25:46 ,浏览量:0

一、什么是里氏代换原则:
  • 一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它察觉不出父类和子类对象的区别。也就是说,在软件里面,把父类替换成它的子类,程序的行为没有变化。

1、示例

(1)、定义一个人员类

package com.rf.rules.liskovSubstitution;

/**
 * @description: 定义一个人员类
 * @author: xiaozhi
 * @create: 2020-05-05 11:58
 */
public class Person {
        public void display(){
            System.out.println("This is a person");
        }
}

(2)、定义一个张三人员类,并继承Person类

package com.rf.rules.liskovSubstitution;

/**
 * @description: 定义一个张三人员类,并继承Person类
 * @author: xiaozhi
 * @create: 2020-05-05 12:00
 */
public class ZhangSan extends Person{
    @Override
    public void display() {
        System.out.println("This is zhangsan");
    }
}

(3)、定义一个测试类

package com.rf.rules.liskovSubstitution;

/**
 * @description: 定义一个测试类
 * @author: xiaozhi
 * @create: 2020-05-05 12:02
 */
public class Test {
    public static void main(String[] args) {
        //调用getDisplay方法,传入的是父类Person
        Person person=new Person();
        getDisplay(person);
        
        //调用getDisplay方法,传入的是自子类zhangSan
        Person zhangSan=new ZhangSan();
        getDisplay(zhangSan);
    }

    public static void getDisplay(Person person){
        person.display();
    }
}

(4)输出结果如下: 在这里插入图片描述(5)、类图如下: 在这里插入图片描述

二、反过来的代换不成立
  • 如果一个软件实体如果使用的是一个子类的话,那么它不能适用于其父类。

1、示例

(1)、定义一个人员类

package com.rf.rules.liskovSubstitution;

/**
 * @description: 定义一个人员类
 * @author: xiaozhi
 * @create: 2020-05-05 11:58
 */
public class Person {
        public void display(){
            System.out.println("This is a person");
        }
}

(2)、定义一个张三人员类,并继承Person类

package com.rf.rules.liskovSubstitution;

/**
 * @description: 定义一个张三人员类,并继承Person类
 * @author: xiaozhi
 * @create: 2020-05-05 12:00
 */
public class ZhangSan extends Person{
    @Override
    public void display() {
        System.out.println("This is zhangsan");
    }
}

(3)、定义一个测试类

在这里插入图片描述

关注
打赏
1661269038
查看更多评论
立即登录/注册

微信扫码登录

0.0444s