Hallo!
Ich habe mir für eine Datenbankimplementierung mit ein Interface erstellt und für die jeweiligen Datenbank Entitäten das Interface spezialisiert:
Oberinterface:
die Spezialisierungen:
Bewerber:
Arbeitgeber:
nun habe ich das Interface "BewerberDAO" mit folgender Klasse implementiert:
Nun gibt es zwei Fragen
1. Wieso bekomme ich die Fehlermeldung:
Obwohl die Methode implementiert worden ist.
Bei den Methoden "retrieve()", "add()" gibt es merkwürdigerweise keine Probleme.
2. Ist die Vererbungshierachie der Interfaces so wie ich sie gemacht habe sinnvoll?
Gruß niesel
Ich habe mir für eine Datenbankimplementierung mit ein Interface erstellt und für die jeweiligen Datenbank Entitäten das Interface spezialisiert:
Oberinterface:
Java:
public interface DAO {
public Object retrieve();
public void add(Object entry);
public void update(Object entry);
}
Bewerber:
Java:
public interface BewerberDAO extends DAO{
public Bewerber retrieve();
public void add(Bewerber entry);
public void update(Bewerber entry);
}
Java:
public interface ArbeitgeberDAO extends DAO{
public Arbeitgeber retrieve();
public void add(Bewerber entry);
public void update(Bewerber entry);
}
Java:
package testjahb;
import java.sql.*;
public class SQLBewerberDAO implements BewerberDAO{
private Connection conn;
SQLBewerberDAO() {
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost/jahbtest?user=root&password=werner80");
}
catch(ClassNotFoundException ex) {
ex.printStackTrace();
}
catch(SQLException ex) {
ex.printStackTrace();
}
}//Kontruktor
public Bewerber retrieve() {
Bewerber bew = new Bewerber();
if(conn != null) {
try {
PreparedStatement stmt = conn.prepareStatement("BId , Name, Vorname FROM Bewerber");
ResultSet rs = stmt.executeQuery();
while(rs.next()) {
int bid = rs.getInt(1);
String name = rs.getString(2);
String vorname = rs.getString(3);
bew.setName(name);
bew.setVorname(vorname);
bew.setId(bid);
}
conn.close();
}catch(SQLException ex) {
ex.printStackTrace();
}
}
return bew;
}
public void add(Bewerber entry) {
if (conn != null) {
try {
PreparedStatement stmt = conn.prepareStatement(
"INSERT INTO bewerber " +
"(Name, Vorname) " +
"VALUES (?,?)");
stmt.setString(1, entry.getName());
stmt.setString(2, entry.getVorname());
stmt.executeUpdate();
conn.close();
}catch(SQLException ex) {
ex.printStackTrace();
}//catch
}//if
}//add
public void update(Bewerber entry) {
if(conn != null) {
try {
PreparedStatement stmt = conn.prepareStatement(
"UPDATE Bewerber SET "+
"Name = ?, Vorname = ? WHERE Bid = ?");
stmt.setString(1, entry.getName());
stmt.setString(2, entry.getVorname());
stmt.executeUpdate();
conn.close();
}
catch(SQLException ex) {
ex.printStackTrace();
}
}
}
}//SQLBewerberDAO
1. Wieso bekomme ich die Fehlermeldung:
Code:
testjahb.SQLBewerberDAO is not abstract and does not override abstract method update(java.lang.Object) in testjahb.DAO
public class SQLBewerberDAO implements BewerberDAO...
Bei den Methoden "retrieve()", "add()" gibt es merkwürdigerweise keine Probleme.
2. Ist die Vererbungshierachie der Interfaces so wie ich sie gemacht habe sinnvoll?
Gruß niesel