我是创建子类的新手,不知道我怎么做"限制"虽然我使用超类'但子类的功能。功能。
在我的子类中,我想在我的超类中使用getCash()
方法,但我只希望它给我一个结果,如果自date
存储以来已超过5天我的子类。我的代码如下所示:
public class Super{
private double cash;
public Super(double cash){
this.cash = cash;
}
public void deposit(double amount) {
if (amount > 0){
this.cash += amount;
}
}
public double getCash(){
if (this.cash > 0){
return this.cash;
}else {
return 0;
}
}
}
public class Sub extends Super {
private LocalDate date;
public Sub(double cash) {
super(cash);
}
}
这是解决问题的正确方法吗?或者我应该实现我的超类中所需的所有逻辑,并且只传递一个变量,告诉它是否超级类或调用该函数的子类?什么是最佳做法?
提前谢谢。
答案 0 :(得分:1)
您可以使用多态来重新定义子类中的函数 该函数需要具有相同的签名(名称+参数)。
public class Sub extends Super {
private LocalDate date;
public Sub(double cash) {
super(cash);
}
public double getCash() {
if (/* your date check */) {
return super.getCash();
}
return 0.0;
}
}
感谢shikjohari 请参阅:JAVA Polymorphism
答案 1 :(得分:1)
仅在日期差异为5天时返回的行为是您的子类的行为,因此您必须仅在子类中编写该条件,但是在条件检查之后您可以调用Class<?> completorC = Class.forName("org.apache.zookeeper.JLineZNodeCompletor");
我认为您可以将子类中的方法用作
super.getCash()