2016-09-12 2 views
0

私はJavaメソッドを作成する際に助けが必要ですが、返すことなく親でメソッドを作成し、異なる基準の子で同じメソッドを使用する必要があります。私はそれを行う方法があることを知っているが、私はそれを覚えていない、どんな助けも高く評価されます。Javaメソッドのplace holderを子供の親で使用する場合

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

は私が

public abstract double calculateTax() 
{ 
    return ; 
} 

アイブ子どもたちにこれと同じ方法を使用する操作を行うと仮定していますどのようにこのですが、これは私がCommercialProperty(第一子のため

calculateTaxesを変更してきた基準です)

平方フィートが1500より大きい場合、状態コードがTXの場合、税金は市場価値* .25です。それ以外の場合、税金は市場価値* .20です。その他、平方フィートが小さい場合または税1500に等しいがResidentialProperty

のための0.10

calculateTaxes *市場価値であるfloodzoneが真の税金である場合*市場価値0.5である余分な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. あなたはを使用拡張クラスがであることを示すメソッド宣言は、のメソッドを "追加"する必要があります。
  2. ちょうど正確には:抽象ではないボディを持っています。ステートメントがない、返されない、何もない!
  3. あなたは基本クラスに持っていたい動作をまだ "固定"しています。そして、子供のクラスがからに変わるのを防ぎます。

私の例では、抽象メソッドはStringを返しています。例をもっと意味のあるものにするためです。もちろん、抽象メソッドには、必要とする任意の署名を付けることができます。そして記録のために:サブクラスのメソッドをオーバーライドするときは、@Overrideアノテーションを適所に置くことを忘れないでください!

+0

抽象メソッド*にボディ*を含めるとよいかもしれません。 OPがその概念を理解していないようです。とにかく、すばらしい答えの周りに! – Li357

+0

そうしました、ありがとうございました! – GhostCat

関連する問題