定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。用抽象构建架构,用实现扩展细节
优点:提高软件系统的可复用性及可维护性
核心思想:面向抽象编程
例子:我们版本更新,我尽可能不修改源代码,但是可以增加新功能(生活中体现:很多互联网公司都实行弹性制作息时间,规定每天工作8小时。意思就是说,对于每天工作8小时这个规定是关闭的,但是你什么时候来,什么时候走是开放的。早来早走,晚来晚走。)
复制代码
1.当前创建接口课程类
public interface ICourse {
//获取id
public Integer getId();
//获取名字
public String getName();
//获取价格
public Double getPrice();
}
复制代码
2.创建java课程类继承课程类
public class JavaCourse implements ICourse{
private Integer Id;
private String name;
private Double price;
public JavaCourse(Integer id, String name, Double price) {
this.Id = id;
this.name = name;
this.price = price;
}
public Integer getId() {
return this.Id;
}
public String getName() {
return this.name;
}
public Double getPrice() {
return this.price;
}
}
复制代码
3.创建java课程打折类继承java课程
public class JavaDiscountCourse extends JavaCourse {
public JavaDiscountCourse(Integer id, String name, Double price) {
super(id, name, price);
}
public Double getOriginPrice(){
return super.getPrice();
}
public Double getPrice(){
return super.getPrice() * 0.61;
}
}
复制代码
原文
https://juejin.im/post/5ef06749f265da02a73477bc