J'ai une application de test JavaFX et le code a beaucoup de parties similaires concernant la base de données. Juste par exemple:Paramètres dans la méthode abstraite (Java 7)
Class.forName("com.mysql.jdbc.Driver");
try (Connection connection = DriverManager.getConnection(Person.getURL(), Person.getDBUSERNAME(), Person.getDBPASSWORD())) {
String sqlQuery = "INSERT INTO users (users.user_name," +
"users.current_balance) VALUES (?, ?)";
PreparedStatement preparedStatement = connection.prepareStatement(sqlQuery);
preparedStatement.setString(1, newUserName);
preparedStatement.setBigDecimal(2, new BigDecimal(newBalance));
preparedStatement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
Je veux faire une SqlWorkClass de classe abstraite avec une méthode abstraite updateDatabaseInfo.
public abstract class SqlWorkClass {
public abstract void updateDatabaseInfo() throws ClassNotFoundException;
et 3 classes héritées de SqlWorkClass - DatabaseInsertClass, DatabaseUpdateClass et DatabaseSelectClass. Mais le problème est que je dois utiliser différents paramètres pour la méthode updateDatabaseInfo pour chaque classe.
public class DatabaseInsertClass extends SqlWorkClass {
@Override
public void updateDatabaseInfo(String newUserName, String newBalance) throws ClassNotFoundException{
//some actions with code above
}
public class DatabaseUpdateClass extends SqlWorkClass {
@Override
public void updateDatabaseInfo(String param1, String param2, String param3) throws ClassNotFoundException{
//some actions with code above
}
public class DatabaseSelectClass extends SqlWorkClass {
@Override
public void updateDatabaseInfo(String param1) throws ClassNotFoundException{
//some actions with code above
}
Il est évident que je ne peux pas le faire. Alors, comment puis-je résoudre ce problème? Peut-être que je devrais utiliser l'interface ou quelque chose d'autre au lieu de la classe abstraite? J'espère pour vos conseils les gars! p.s. J'utilise Java 7.
vous pouvez utiliser un objet '[]' tableau en tant que paramètre super typer et vous pouvez appeler le supermethod dans vos sous-classes comme celle-ci: 'super.updateDatabaseInfo (nouvel objet [] {param1, param2, ...})'. si la méthode doit faire la même chose pour les 3 sous-classes, pourquoi a-t-elle besoin d'un paramètre différent? – XtremeBaumer