Ich habe eine Schnittstelle und eine Klasse die Schnittstelle wie diese Umsetzung:Wie ändere ich den Parameter von einer geerbten Klasse, die eine Schnittstelle implementiert?
public interface DocumentDAO<T>{
public long insert (T doc);
}
public class PostgreSQLDocumentDAO implements DocumentDAO<Document>{
public long insert(Document doc){}
protected void insertDocument(Document doc){}
}
Ich möchte den Einsatz Methode der PostgreSQLDocumentDAO
Ändern der Parameter von Dokument-Seite außer Kraft zu setzen, wo Seite ist Eine Klasse, die erweitert Dokument.
ich so etwas wie dies wollen:
public class PostgreSQLPageDAO extends PostgreSQLDocumentDAO{
public long insert(Page doc){
super.insertDocument(page);
//specific implementation goes here
}
}
Wie kann ich diese bekommen?
UPDATE: Der obige Code ist nicht richtig, weil eine Klasse Inserter
verwendet die Schnittstelle DocumentDAO
genannt. Wenn es die Einfügung Methode aufruft, selbst wenn ein PostgreSQLPageDAO Objekt ist, wird es die Einfügemethode aufrufen, Dokument einfügen, da diese Methode vererbt wird.
ich die legen Sie eine Art und Weise zu, wenn die Inserter
Klasse aufrufen Methode tun möchte, verwendet er die Methode, die die Seite einfügt. Auf diese Weise denke ich, dass ich die insert (Document doc)
von PostgreSQLDocumentDAO
überschreiben muss.
Was Sie beschreiben, ist, wie Polymorphismus in Java funktioniert.Was Sie verlangen, ist, dass die Schnittstelle 'DocumentDAO' in der Lage ist, eine Methode auszuwählen, die auf einem Typ basiert, von dem sie nichts weiß (d. H.' Page'). –