final修飾子を使用した場合で
お世話になっています。
finalクラスとfinalメソッドの利用目的の考え方を踏まえて、
id/passwordを「新規」、「更新」、「削除」したい場合で、
開発者側から判定してほしいのですが。
※更新、削除が複数実行されることを考慮する
dbへのユーザーの追加方法だけ、決定事項として実行する(finalメソッド)
public class LoginAction {
public static void main(String[] args) {
User login = new Login("test","test"); //サブクラスを親クラスにインスタンス化する
int key = 0;
String id="test";
String password="test";
login.check(key, id, password);
}
}
public class Login extends User {
public Login(String id, String password) {
super(id, password);
}
//処理判断
@Override
public void check(int key, String id, String password) {
if(key==0){
insertUser(id,password);
}else if(key==0){
deleteUser(id,password);
}else if(key==2){
updateUser(id,password);
}
}
}
public class User {
public User(String id,String password) {}
/**
* ユーザーの追加(一件)
*/
public final void insertUser(String id, String password) {
//DBに登録
}
/**
* ユーザーの削除(1件)
*/
public final void deleteUser(String id,String password) {
//DBからデータ削除
}
/**
* ユーザーの更新(1件)
*/
public final void updateUser(String id, String password) {
//DBの更新
}
//処理判断
public void check(int key, String id, String password) {
//サブクラスに預ける
}
}
また、この時に、check()メソッドでどの処理かを判断し、メソッドのわたしているのですが、それをコンストラクタで渡したら、
無駄なロスが出そうな気がするのですが。
他に、サブクラスで設定し、親クラスにインスタンス化を実行すると、
何がいいのかがよくわかりません。
親クラスはサブクラスのデータを持っていて、そうすることで最終的に
親クラスから、サブクラスのデータが取れるという感じなのですが。
宜しくお願いします。
お礼
回答ありがとうございます。サイトの作りが2段構え(?)になっていたのですね。それと有料なんですか。入会するか、よく考えて見ます。