利用抽象类编写一个程序实现公交车卡售票管理。当输入为“老年卡”、“学生卡”和“普通卡”时显示不同的卡类,及购票金额(“老年卡”购票金额=原价*50%、“学生卡”购票金额=原价*60%、“普通卡”购...
时间: 2023-10-01 15:05:41 浏览: 23
好的,以下是实现上述功能的示例代码:
```java
// 抽象卡类
abstract class Card {
protected double price; // 原价
public Card(double price) {
this.price = price;
}
// 计算购票金额的抽象方法
public abstract double calculatePrice();
}
// 老年卡类
class ElderCard extends Card {
public ElderCard(double price) {
super(price);
}
@Override
public double calculatePrice() {
return price * 0.5;
}
}
// 学生卡类
class StudentCard extends Card {
public StudentCard(double price) {
super(price);
}
@Override
public double calculatePrice() {
return price * 0.6;
}
}
// 普通卡类
class NormalCard extends Card {
public NormalCard(double price) {
super(price);
}
@Override
public double calculatePrice() {
return price;
}
}
// 测试类
public class Test {
public static void main(String[] args) {
double price = 10.0; // 假设原价为10元
// 根据输入显示不同的卡类及购票金额
String input = "老年卡";
if (input.equals("老年卡")) {
Card card = new ElderCard(price);
System.out.println("购票金额为:" + card.calculatePrice());
} else if (input.equals("学生卡")) {
Card card = new StudentCard(price);
System.out.println("购票金额为:" + card.calculatePrice());
} else if (input.equals("普通卡")) {
Card card = new NormalCard(price);
System.out.println("购票金额为:" + card.calculatePrice());
} else {
System.out.println("输入有误!");
}
}
}
```
以上代码定义了一个抽象的卡类,包含了一个原价属性和一个计算购票金额的抽象方法。然后分别定义了老年卡、学生卡和普通卡三个具体的卡类,实现了购票金额的具体计算方法。最后在测试类中根据输入判断出需要哪种卡,创建相应的卡对象并调用其计算购票金额的方法,输出结果。