2017-07-31 2 views
0

のは、私は私のモデルに2つのクラスがあるとしましょう:JDBCのDAOと継承

public class Account { 
    int capital; 
    int numero 
    } 

public class SavingAccount extends Account{ 
    double rate; 
} 

私はJDBCを使用してデータベースにアカウントを保存または取得する必要がある場合だから、それは動作しますが、結合のために、それはのためにOKです資本とNUMEROが、私はそれを型をチェックし、キャストする必要があります率について:

if(account.getType() == AccountType.SAVINGACCOUNT) { 
((SavingAccount)Account).setRate(result.getDouble("rate")); 
} 

それはそれよりか、2種類の方法を持っている以外の方法で行うことは可能ですか?

答えて

0

最後の実行直前クラスはSavingAccountです。 SavingAccountにはrate's getter and setter個のメソッドが含まれています。したがって、getRate()を使用するたびに、SavingAccountのヒープスペースにgetRate()メソッドがあるため、キャストをSavingAccountにキャストする必要があります。

最終的な実装はSavingAccount経由であるため、正しいデータベーストランザクションのためにTypeChecking AccountType.SAVINGACCOUNT経由でも提供します。

Accountインスタンスで実行すると、多形性が得られます。それが重要な理由です。

あなたのシナリオでは、他の解決策はありません。あなたは良いことをしている。