2016-09-12 1 views
0

Мне нужна помощь для создания Java-метода, мне нужно создать метод в родительском без какого-либо возврата и использовать тот же метод у детей с разными критериями. Я знаю, что есть способ сделать это, но я не могу его запомнить, любая помощь будет высоко оценена.Java-метод место владельца в родительском для использования в дочерних

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

Является ли это, как я полагаю, сделать

public abstract double calculateTax() 
{ 
    return ; 
} 

Ive использовать этот же метод у детей, но это критерии я изменить

calculateTaxes для CommercialProperty (первый ребенок)

Если квадратные футы больше 1500, то если код состояния - это TX, то налоги являются рыночной стоимостью * .25 Еще налоги являются рыночной стоимостью * .20 else, если квадратные футы меньше или равно 1500 налогов является рыночной стоимостью * .10

calculateTaxes для ResidentialProperty

является 0,5 * рыночной стоимостью, если floodzone является истинными налогами является дополнительными 10%.

Я знаю, что не хватает данных, но я просто хотел бы знать понятие о том, как

+2

Вы хотите создать [абстрактный метод] (http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html)? – 4castle

+0

Абстрактные методы не имеют тел. – Li357

+0

@ 4castle Я думаю, что это то, что это такое, я отредактировал свой вопрос снова, надеюсь, он имеет больше смысла, спасибо – jojo

ответ

1

Простой пример использования абстрактных классов, имея при этом в виду 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. И, если быть точным: заявленный метод аннотацияне есть кузов. Никаких заявлений, нет возврата, ничего!
  3. По-прежнему вы «фиксируете» поведение, которое вы хотите иметь в своем базовом классе ... прямо там. И вы запрещаете дочерние классы от изменять такое поведение.

В моем примере абстрактный метод возвращает строку; просто чтобы сделать пример более значимым. Конечно, абстрактные методы могут иметь любую подпись, которую вы хотите иметь. И для записи: когда переопределяет методы в подклассах, не забудьте поставить аннотацию @Override на место!

+0

Можно было бы добавить, что абстрактные методы * не имеют тел *. Похоже, что ОП не понимает эту концепцию. В любом случае, все вокруг отличный ответ! – Li357

+0

Сделал так, спасибо за предложение! – GhostCat

Смежные вопросы