现有父类Goods,在此基础上派生出子类Milk,子类定义了自己的属性double类型的会员价格(vipPrice),有带参数的构造方法,覆盖了父类的show方法
时间: 2024-12-23 13:23:43 浏览: 8
在面向对象编程中,假设有一个基础商品类`Goods`,它包含了通用的商品信息,如名称、价格等。为了适应特定业务场景,比如牛奶产品,你可以创建一个名为`Milk`的子类,这个子类继承自`Goods`父类,并添加自身的特性。
`Milk`子类可能会定义如下:
```java
public class Milk extends Goods {
// 定义子类特有的属性
private double vipPrice; // 会员价
// 带参数的构造函数,用于初始化成员变量
public Milk(String name, double price, double vipPrice) {
super(name, price); // 调用父类的构造方法传递通用信息
this.vipPrice = vipPrice;
}
// 重写父类的show方法,增加会员价的展示
@Override
public void show() {
super.show(); // 先调用父类的显示方法
System.out.println("VIP价格:" + vipPrice);
}
}
```
在这个例子中,`Milk`子类不仅继承了`Goods`的公共属性和行为,还新增了一个`vipPrice`属性并提供了相应构造方法。当需要显示`Milk`的信息时,会调用`show`方法,此时会包含会员价的内容。
相关问题
定义商品类Goods,包含单价unitPrice和数量account两个属性,方法包括构造方法和价格计算方法totalPrice()。 定义接口VipPrice,包含DISCOUNT属性和reducedPrice()方法,使VIP会员享受商品价格8.5折待遇。 定义服装子类Clothing,它继承商品类Goods,并实现接口VipPrice,并有服装样式style属性、构造方法和toString方法。 编写一个测试类,创建一种服装(180,2,“女装” ),利用toString方法输出服装信息。
好的,根据你的要求,以下是代码实现:
```
// 定义商品类Goods
class Goods {
private double unitPrice; // 单价
private int account; // 数量
public Goods(double unitPrice, int account) {
this.unitPrice = unitPrice;
this.account = account;
}
// 计算总价
public double totalPrice() {
return unitPrice * account;
}
}
// 定义接口VipPrice
interface VipPrice {
double DISCOUNT = 0.85; // 折扣
// 计算VIP价格
double reducedPrice();
}
// 定义服装子类Clothing
class Clothing extends Goods implements VipPrice {
private String style; // 服装样式
public Clothing(double unitPrice, int account, String style) {
super(unitPrice, account);
this.style = style;
}
// 计算VIP价格
public double reducedPrice() {
return totalPrice() * DISCOUNT;
}
// 输出服装信息
public String toString() {
return "服装信息:\n" + " 服装样式:" + style + "\n" + " 单价:" + unitPrice + "元\n" + " 数量:" + account + "\n" + " 总价:" + totalPrice() + "元\n" + " VIP价格:" + reducedPrice() + "元";
}
}
// 编写测试类
public class Test {
public static void main(String[] args) {
Clothing clothing = new Clothing(180, 2, "女装");
System.out.println(clothing.toString());
}
}
```
运行测试类后输出的结果为:
```
服装信息:
服装样式:女装
单价:180.0元
数量:2
总价:360.0元
VIP价格:306.0元
```
以上就是代码实现,如果你还有其他问题或需求,可以继续问我哦!
定义商品类Goods,包含单价unitPrice和数量account两个属性,方法包括构造方法和价格计算方法totalPrice()。定义接口VipPrice,包含DISCOUNT属性和reducedPrice()方法,使VIP会员享受商品价格8.5折待遇。定义服装子类Clothing,它继承商品类Goods,并实现接口VipPrice,并有服装样式style属性、构造方法和toString方法。编写一个测试类,创建一种服装(180,2,“女装” ),利用toString方法输出服装信息。
以下是代码实现:
```java
// 定义商品类Goods
class Goods {
double unitPrice; // 单价
int account; // 数量
// 构造方法
public Goods(double unitPrice, int account) {
this.unitPrice = unitPrice;
this.account = account;
}
// 价格计算方法
public double totalPrice() {
return unitPrice * account;
}
}
// 定义VIP价格接口VipPrice
interface VipPrice {
double DISCOUNT = 0.85; // 折扣
// 计算VIP会员折后价格
default double reducedPrice(double price) {
return price * DISCOUNT;
}
}
// 定义服装子类Clothing
class Clothing extends Goods implements VipPrice {
String style; // 服装样式
// 构造方法
public Clothing(double unitPrice, int account, String style) {
super(unitPrice, account);
this.style = style;
}
// 重写toString方法
public String toString() {
double price = super.totalPrice(); // 原价
double reducedPrice = reducedPrice(price); // 折后价格
return "商品信息:\n单价:" + unitPrice + " 元\n数量:" + account + " 件\n服装样式:" + style +
"\n原价:" + price + " 元\n折后价:" + reducedPrice + " 元";
}
}
// 测试类
public class Test {
public static void main(String[] args) {
Clothing clothing = new Clothing(180, 2, "女装");
System.out.println(clothing.toString());
}
}
```
输出结果:
```
商品信息:
单价:180.0 元
数量:2 件
服装样式:女装
原价:360.0 元
折后价:306.0 元
```
阅读全文