详细说说第二点,并举例说明,最好举例零售供应链优化项目集类似的信息
时间: 2024-09-09 11:01:23 浏览: 57
第二点涉及到方法重写的机制,在面向对象编程中,子类通过重写父类的方法提供自己特有的实现。这允许调用者使用父类的引用来调用一个方法,实际执行的却是子类的方法实现。这样的机制让程序更加灵活,能够在运行时根据对象的实际类型来决定调用哪个方法。
举例说明:
假设我们有一个零售供应链优化项目,其中有一个父类叫`Product`,代表商品,它有一个方法叫`getPrice()`,用于获取商品的价格。
```java
class Product {
public double getPrice() {
// 基础商品价格计算方法
return 0;
}
}
```
然后我们有`Product`的两个子类,分别是`DiscountProduct`(打折商品)和`PromotionProduct`(促销商品),它们各自提供了具体的`getPrice`方法实现。
```java
class DiscountProduct extends Product {
private double discountRate; // 打折率
public DiscountProduct(double discountRate) {
this.discountRate = discountRate;
}
@Override
public double getPrice() {
// 重写获取打折后的商品价格
return super.getPrice() * (1 - discountRate);
}
}
class PromotionProduct extends Product {
private double promotionRate; // 促销加成率
public PromotionProduct(double promotionRate) {
this.promotionRate = promotionRate;
}
@Override
public double getPrice() {
// 重写获取促销后的商品价格
return super.getPrice() * (1 + promotionRate);
}
}
```
在这个例子中,如果有一个`Product`类型的对象列表,里面包含了不同类型的商品,我们可以在遍历这个列表时,统一调用`getPrice()`方法,而根据每个对象的实际类型(`DiscountProduct`或`PromotionProduct`),执行的是相应的重写方法。
```java
List<Product> productList = new ArrayList<>();
productList.add(new Product());
productList.add(new DiscountProduct(0.2)); // 20%的折扣
productList.add(new PromotionProduct(0.1)); // 10%的促销加成
for (Product product : productList) {
System.out.println("Product price: " + product.getPrice());
}
```
运行上述代码,不同的商品将根据其类型使用不同的方法来计算价格。
阅读全文