继承和子类基础知识

时间:2015-05-12 17:51:28

标签: java inheritance superclass

我是创建子类的新手,不知道我怎么做"限制"虽然我使用超类'但子类的功能。功能。

在我的子类中,我想在我的超类中使用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);
    }
}

这是解决问题的正确方法吗?或者我应该实现我的超类中所需的所有逻辑,并且只传递一个变量,告诉它是否超级类或调用该函数的子类?什么是最佳做法?

提前谢谢。

2 个答案:

答案 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()