【问题标题】:Java method place holder in parent to use in children [duplicate]父级中的Java方法占位符在子级中使用[重复]
【发布时间】:2017-01-19 11:07:35
【问题描述】:

我需要帮助来创建一个 java 方法,我需要在父级中创建一个没有任何返回的方法,并在具有不同标准的子级中使用相同的方法。我知道有办法做到这一点,但我不记得了,任何帮助将不胜感激。

public abstract class Property // this is the class name, which is parent 

这就是我应该做的事情

public abstract double calculateTax()
{
    return ;
}

我已经在孩子身上使用同样的方法,但这是我必须改变的标准

calculateTaxes for CommercialProperty(第一个孩子)

如果平方英尺大于 1500,则如果州代码为 TX,则税为市场价值 * .25 否则税为市场价值 * .20 否则,如果平方英尺小于或等于 1500,则税为市场值 * .10

calculateTaxes 的 ResidentialProperty

是 0.5 * 如果洪水区是真实的,市场价值是额外的 10%。

我知道我错过了数据,但我只是想知道如何做的概念

【问题讨论】:

  • 您要创建abstract method吗?
  • 抽象方法没有主体。
  • @4castle 我想就是这样,我再次编辑了我的问题,希望它更有意义,谢谢
  • 解释“不同的标准”??
  • joho:请参阅我的答案 - 您的代码示例只包含错误的语法。 abstract 翻译为:没有正文

标签: java methods placeholder


【解决方案1】:

一个使用 abstract 类的简单示例,同时记住 Open/Closed principle 如下所示:

abstract class A {
  protected abstract String getFoo();
  public final bar() {
    System.out.println("The foo: " + getFoo());
  }
}

class B extends A {
  @Override
  protected String getFoo() { return "whatever"; }
}

这里的想法:

  1. 您使用 abstract 方法声明来指示扩展类必须为此类方法“添加”行为。
  2. 确切地说:声明为abstract的方法有主体。没有陈述,没有回报,什么都没有!
  3. 你仍然“固定”你希望在你的基类中拥有的行为......就在那里。并且您可以防止子类改变这种行为。

在我的示例中,抽象方法返回一个字符串;只是为了使示例更有意义。当然,抽象方法可以具有您希望它们具有的任何签名。记录一下:当覆盖子类中的方法时,不要忘记将@Override注解放在适当的位置!

【讨论】:

  • 最好包含抽象方法没有主体。 OP似乎不理解这个概念。无论如何,到处都是很好的答案!
  • 照做了,谢谢建议!
猜你喜欢
  • 2015-05-31
  • 1970-01-01
  • 1970-01-01
  • 2021-12-07
  • 1970-01-01
  • 2015-07-28
  • 2019-08-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多