抽象快递类Express,其包含一个属性int weight表示快递重量(单位为kg),一个方法getWeight()用于返回快递重量和一个抽象方法getTotal()用于计算快递运费。 2、两个类继承Express,分别是: (a)顺路快递SLExpress:计价规则为首重(1kg)12元,每增加1kg费用加2元。 (b)地地快递DDExpress:计价规则为首重(1kg)5元,每增加1kg费用加1元。 3、Main: 接收用户通过控制台输入的N行信息,自动计算所有快递的运费总和。
时间: 2024-03-21 08:41:56 浏览: 377
Get和Set方法-java类和对象
下面是Java的实现代码:
Express.java
```java
public abstract class Express {
private int weight; // 快递重量(单位:kg)
public Express(int weight) {
this.weight = weight;
}
public int getWeight() {
return weight;
}
public abstract double getTotal(); // 计算快递运费
}
```
SLExpress.java
```java
public class SLExpress extends Express {
public static final double BASE_PRICE = 12.0; // 首重单价
public static final double EXTRA_PRICE = 2.0; // 续重单价
public SLExpress(int weight) {
super(weight);
}
@Override
public double getTotal() {
if (getWeight() <= 1) {
return BASE_PRICE;
} else {
return BASE_PRICE + EXTRA_PRICE * (getWeight() - 1);
}
}
}
```
DDExpress.java
```java
public class DDExpress extends Express {
public static final double BASE_PRICE = 5.0; // 首重单价
public static final double EXTRA_PRICE = 1.0; // 续重单价
public DDExpress(int weight) {
super(weight);
}
@Override
public double getTotal() {
if (getWeight() <= 1) {
return BASE_PRICE;
} else {
return BASE_PRICE + EXTRA_PRICE * (getWeight() - 1);
}
}
}
```
Main.java
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int total = 0; // 总运费
int n = scanner.nextInt();
for (int i = 0; i < n; i++) {
String type = scanner.next();
int weight = scanner.nextInt();
Express express;
if (type.equals("SL")) { // 顺路快递
express = new SLExpress(weight);
} else { // 地地快递
express = new DDExpress(weight);
}
total += express.getTotal();
}
System.out.println("所有快递的运费总和为:" + total);
}
}
```
在上面的代码中,我们定义了一个抽象类`Express`,其中包含一个属性`weight`表示快递重量(单位为kg),一个方法`getWeight()`用于返回快递重量和一个抽象方法`getTotal()`用于计算快递运费。然后,我们分别定义了两个类`SLExpress`和`DDExpress`继承自`Express`,并实现了它们的`getTotal()`方法,以计算它们的运费。最后,在`Main`类中,我们接收用户通过控制台输入的N行信息,自动计算所有快递的运费总和。
阅读全文