feat(class23): 多态、继承、重载综合练习,引入lombok插件简化语法

- 新增 Card 类,包含基本的存款和消费功能- 添加 GoldCard 和 SilverCard 类,分别实现不同的优惠策略
- 编写 Test 类进行功能测试
- 在项目中集成 Lombok 依赖,简化代码
This commit is contained in:
2025-07-15 00:32:56 +08:00
parent a714712f96
commit 8a553fe454
5 changed files with 101 additions and 0 deletions

View File

@@ -7,5 +7,14 @@
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module-library" scope="PROVIDED">
<library>
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/projectlombok/lombok/1.18.34/lombok-1.18.34.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
</component>
</module>

27
src/class23/Card.java Normal file
View File

@@ -0,0 +1,27 @@
package class23;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
// lombok 注解,简化类的 getter/setter/toString/equals/hashCode 方法
// IDEA需启用注解处理器
public class Card {
private String carID;
private String name;
private int phone;
private double money;
public void deposit(double money) {
this.money += money;
}
public void consume(double money) {
if(this.money >= money){
this.money -= money;
}else {
System.out.println("余额不足");
}
}
}

26
src/class23/GoldCard.java Normal file
View File

@@ -0,0 +1,26 @@
package class23;
public class GoldCard extends Card{
public GoldCard(String carID, String name, int phone, double money) {
super(carID, name, phone, money);
}
@Override
public void consume(double money){
System.out.println("您当前消费:"+ money);
System.out.println("优惠后价格:"+ money*0.8);
if (money<getMoney()){
setMoney(getMoney()-money*0.8);
} else {
System.out.println("余额不足");
}
if(money*0.8>=200){
printTicket();
}else {
System.out.println("您当前消费不满200不能免费洗车");
}
}
public void printTicket(){
System.out.println("您消费了,请打印洗车票");
}
}

View File

@@ -0,0 +1,18 @@
package class23;
public class SilverCard extends Card{
public SilverCard(String carID, String name, int phone, double money) {
super(carID, name, phone, money);
}
@Override
public void consume(double money) {
System.out.println("您当前消费:"+ money);
System.out.println("优惠后价格:"+ money*0.9);
if (money<getMoney()){
setMoney(getMoney()-money*0.9);
} else {
System.out.println("余额不足");
}
System.out.println("当前余额:"+ getMoney());
}
}

21
src/class23/Test.java Normal file
View File

@@ -0,0 +1,21 @@
package class23;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
GoldCard goldCard = new GoldCard("123456", "张三", 123456789, 5000);
goldCard.deposit(1000);
pay(goldCard);
SilverCard silverCard = new SilverCard("654321", "李四", 123456789, 5000);
pay(silverCard);
}
public static void pay(Card c){
System.out.println("请刷卡,请输入您的消费金额:");
Scanner sc = new Scanner(System.in);
double money = sc.nextDouble();
c.consume(money);
}
}