例子
假设有一门课程,我们可以获取它的ID,课程名,课程价格
代码
首先创建一个接口
public interface ICourse {
Integer getId();
String getName();
Double getPrice();
}
以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;
}
}
测试
public class Test {
public static void main(String[] args) {
ICourse iCourse = new JavaCourse(1, "Java", 200d);
System.out.println(String.format("课程ID:%d\n课程名:%s\n课程价格:%f",
iCourse.getId(), iCourse.getName(), iCourse.getPrice()));
}
}
现在有一个需求,到了特定节日需要对课程进行打折,并且不同价位不同折扣
为了不改变原有的接口和实现类,创建一个Java课程的子类
public class JavaDiscountCourse extends JavaCourse {
public JavaDiscountCourse(Integer id, String name, Double price) {
super(id, name, price);
}
public Double getOriginPrice() {
return super.getPrice();
}
@Override
public Double getPrice() {
Double originPrice = getOriginPrice();
double disCountPrice;
if (originPrice > 0 && originPrice < 100) {
disCountPrice = originPrice * 0.95;
} else if (originPrice >= 100 && originPrice < 200) {
disCountPrice = originPrice * 0.9;
} else {
disCountPrice = originPrice * 0.8;
}
return disCountPrice;
}
}
测试
public class Test {
public static void main(String[] args) {
ICourse iCourse = new JavaDiscountCourse(1, "Java", 200d);
System.out.println(String.format("课程ID:%d\n课程名:%s\n课程价格:%f\n课程原始价格:%f",
iCourse.getId(), iCourse.getName(), iCourse.getPrice(), ((JavaDiscountCourse) iCourse).getOriginPrice()));
}
}
类图
扫描二维码关注公众号,回复:
8904317 查看本文章