gpt4 book ai didi

java - 从抽象类继承

转载 作者:行者123 更新时间:2023-12-01 18:37:40 25 4
gpt4 key购买 nike

假设我有一个抽象类:

public abstract class Customer {
private int price;

public void setPrice(int price) {
this.price = price;
}

public int getPrice() {
return price;
}

public abstract void pay(int n);
public abstract void occupySpace();

}

我还有两个继承自它的类:

  1. HandicappedCustomer,我想将价格设置为 0。
  2. RegularCustomer,我想将价格设置为 100。

现在,如果我创建每个类的实例并调用 getPrice(),则两个类都返回 0。当我为类的每个相应实例调用 getPrice() 时,使其返回 0 和 100 的最简单方法是什么?

当我尝试在 RegularCustomer 类中调用 setPrice(100) 时,我发现它不起作用。说白了,我想在我的 main 中有以下代码:

Customer a = new HandicappedCustomer(); 
Customer b = new RegularCustomer();
System.out.println(a.getPrice());
System.out.println(b.getPrice());

并让它返回:

0
100

最佳答案

如果您希望 getPrice 对于普通客户始终返回 100,对于残障客户 始终返回 0,您可以这样写

class RegularCustomer extends Customer {
public int getPrice() {
return 100;
}
}

class HandicappedCustomer extends Customer {
public int getPrice() {
return 0;
}
}

但这听起来并不完全像您想要的(至少对于普通客户来说),因为您在设计中包含了 setPrice 。听起来您希望首先返回这些值。在这种情况下:

class RegularCustomer extends Customer {
public RegularCustomer() {
setPrice(100);
}
}

class HandicappedCustomer extends Customer {
public HandicappedCustomer() {
setPrice(0);
}
}

应该可以解决问题。

它们都将继承 setPrice 以防您稍后想要更改它们,并且它们都将继承 getPrice 因此一切都应该按预期工作。

Live demo at ideone .

关于java - 从抽象类继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21210273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com