Was kann man unter implementieren so verstehen?

Status
Nicht offen für weitere Antworten.

math.iso@live.de

Aktives Mitglied
Hy java mitglieder ,ich hab Verstänidprobleme.

Was versteht ihr unter wenn ihr sagen wir mal aus dem i-net liest , die Klasse Rectangle implementiert die Klasse Shape , was heißt das für euch?


Oder die Klasse Rectangle implementiert das Interface Shape ?

implemenieren...????

oder ein anderes beispiel wäre dieser Kontext
public class KontoFrame extends Frame
implements ActionListener, WindowListener



ich hoffe ihr könnt mir helfen ,und falls es geht sollte eure antwort auch nicht sehr knapp sein :D [/quote]
 

foobar

Top Contributor
Eine Klasse kann ein oder mehrere Interfaces implementieren dadurch wird sie zu einem Typ dieses Interfaces. D.h. du mußt jetzt alle Methoden dieses Interfaces in der Klasse implementieren.
Eine Klasse kann aber keine andere Klasse implementieren, weil eine Klasse bereits konkret ist ein Interface aber nur abstrakte Methoden enthält.
 

Landei

Top Contributor
"extends" heißt, die Kasse erweitert ihre Elternklasse. Soll heißen, KontaFrame hat und kann alles, was Frame kann und fügt eventuell noch eigenes Verhalten hinzu.

"implements" heißt zwar "implementiert", aber das ist meiner Meinung nach etwas unglücklich ausgedrückt. Du kannst dir ein Interface wie einen "Vertrag" vorstellen: Wer den Vertrag "unterschreibt" (implementiert), muss bestimmte "Bedingungen" erfüllen (Methoden implementieren).
"implements ActionListener" heißt also nichts weiter als, "ich habe alle Methoden implementiert, die im ActionListener-Vertrag drinstehen (nämlich actionPerformed(ActionEvent) ), die könnt ihr ruhig aufrufen"
 

math.iso@live.de

Aktives Mitglied
wozu braucht man dann ein exstend von einer kleiner klasse , wenn ich sowieso alles übertragen kann von interface ,und warum müssen die methoden neu geschrieben werden..?
 

SirGecco

Mitglied
In den Interfaces sind die Methoden nur abstrakt definiert, d. h. in den Klassen, die das Interface implementieren, werden die Methoden mit "Leben" gefüllt. Alles was von Oberklassen geerbt wird (extends) ist bereits konkretisiert (mit "Leben" gefüllt). (Außnahme es handelt sich um abstrakte (Ober)Klassen, hier müssen dann die abstrakten Methoden konkretisiert werden)
 
G

Guest

Gast
Das Interface gibt vor, welche Methoden Du in den konkreten Klassen programmieren musst. In den Interfaces selbst steht überhaupt kein Code, sondern es werden nur die Methodennamen mit Rückgabewert und Parametern angegeben.

Zu Deinem Beispiel mit Shape (Form) und Rectangle (Rechteck).

In einer Firma arbeiten 3 Mitarbeiter, die gemeinsam an einem Programm entwickeln. Mit diesem Programm sollen verschiedene mathematische Berechnungen und die Darstellung von Formen möglich sein.

Der 1 Mitarbeiter schreibt das Hauptprogramm, welches die verschiedene Formen benutzt, d.h. diese anzeigt und mit ihnen Berechnungen ausführt. Da er allerdings nicht auch noch die konkreten Klassen für die Formen Kreis, Rechteck, Quadrat, Raute, Dreieck programmieren kann (aus Zeitmangel), er aber bereits weiß, welche Funktionen/Methoden alle diese Klassen gemeinsam haben müssen, schreibt er für die beiden anderen Mitarbeiter eine Vereinbarung/Interface.

Code:
interface Form {

public double berechneUmfang(); 
public double berechneFlaeche();
public void formAnzeigen();
public void formAusmalen(Color color);
usw.
}

Anschließend gibt er dieses Interface an die beiden anderen weiter, mit der Bitte die noch fehlenden Klassen Kreis, Rechteck, Quadrat, Raute, Dreieck zu programmieren. Durch das Interface wissen jetzt beide Mitarbeiter, welche Methoden die konkreten Klassen unbedingt haben müssen. Und so programmieren sie die konkreten Klassen.

Code:
public class Kreis implements Form {

//Konstruktor
public Kreis(){}

public double berechneUmfang() {

    //Hier steht der Code zur Berechnung des Umfanges
   return umfang;

} 

public double berechneFlaeche() {

    //Hier steht der Code zur Berechnung der Fläche
   return flaeche;

}

public void formAnzeigen() {

    //Hier steht der Code zum Anzeigen
   return umfang;

}

public void formAusmalen(Color color) {

    //Hier steht der Code zum Ausmalen
   return umfang;

}

... entsprechend die weiteren Klassen

Interfaces helfen außerdem Deinen Code von konkreten Implementierungen zu entkoppeln. D.h. Der Mitarbeiter, der das Hauptprogramm schreibt, verwendet in seinem Programm einfach das Interface und lässt sich eine konkrete Klasse z.B. durch eine Factory erzeugen bzw. injezieren (Stichpunkte Dependency Injection und Spring).

Code:
//irgendwo im Programm
Form meineForm = Factory.erzeugekonkreteForm();

Das aber nur so am Rande.
 
G

Guest

Gast
Korrektur:

Code:
public void formAnzeigen() { 

    //Hier steht der Code zum Anzeigen 

} 

public void formAusmalen(Color color) { 

    //Hier steht der Code zum Ausmalen

}
 

math.iso@live.de

Aktives Mitglied
Hätte jetzt dazu 2 weiteren fragen :D


1)Muss man wenn man eine Klasse implementiert ,dass man alle methoden dann mit "leben" füllen muss?könnte man auch nur einige methoden mit leben füllen...

2)Eigentlich wenn man sich recht überlegt ,kommt mir eine implementierung sinnlos vor , denn ich muss ja die abstracten methoden von interface nochmal bei der implementierte klasse nochmal neuschreiben oder ?hab ich eine wichtige eigenschaft übersehen ?





Code:
public class KontoFrame extends Frame 
implements ActionListener, WindowListener
 

Ice-Tea

Bekanntes Mitglied
zu 1) nein du musst nicht alle methoden implementieren. Aber du musst diejenigen Methoden , die kein "leben" beinhalten als abstract definieren. Das hat allerdings den Nachteil, das du auch die Klasse die als abstract definieren musst.

Bsp:
Code:
abstract interface Namen{
public String getVorname();
abstract String getNachname();
}

abstract class TierImpl implements Namen{
public String getVorname(){
   return "Wuffel";
}
public abstract String getNachname();
}

class MenschImpl implements Namen{
public String getVorname(){
   return "Hans";
}
public String getNachname(){
   return "Wurst"
}
}

das Tier hat zwar einen Vornamen, jedoch keinen Nachnamen. Daher brauchst du auch keinen Methodenrumpf zu implementieren. Java aber erwartet aber, dass alle Methoden überschrieben werden.


zu 2) das kommt auf den Anwendungfall an.

Für ein Programm, dass nur aus einer Klasse besteht mach ein Interface wenig sinn.

EDIT: du kannst das abstract auch weglassen, dann musst du aber der Methode sagen was es die zu tun hat.
etwas so:
Code:
nterface Namen{
public String getVorname();
abstract String getNachname();
}

lass TierImpl implements Namen{
public String getVorname(){
   return "Wuffel";
}
public String getNachname(){
   return null;
}
}

class MenschImpl implements Namen{
public String getVorname(){
   return "Hans";
}
public String getNachname(){
   return "Wurst"
}
}
 

math.iso@live.de

Aktives Mitglied
@Ice-Tea:

Was wäre an der 4 Zeile deines Programms wenn da stehen würde
Code:
public String getNachname

wie müsste man die Klasse die Tierimp verändern ,damit man die methode getNachname nicht mit leben füllt.

"müsste es in dem fall
Code:
public String getNachname
heißen ? "

oder
Code:
 abstract String getNachname
?
 

Ice-Tea

Bekanntes Mitglied
dann könnteat du

abstract public String getNachname();

verwenden

EDIT:
Wichtig ist das die Klasse, die methoden vom interface erbt, abstract ist. Denn nur so kannst du bestimmte methoden als abstract 'markieren' und musst ihr kein leben einhauchen

Sorry, ich hatte das public in der klasse vergessen, habs grad mal korrigiert. (methoden aus einem interface sind immer public)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Wo den Ordner javafx-sdk-21.0.2 unter Linux ablegen? Java Basics - Anfänger-Themen 5
E Audio Datei unter Bedingungen ausführen Java Basics - Anfänger-Themen 19
D Jar Datei startet unter Linux nicht Java Basics - Anfänger-Themen 3
U Beispiel Methode size() vom "Collection"-interface... Wie kann man sichtbar machen, was die Methode unter der Haube macht? Java Basics - Anfänger-Themen 8
nbergmann Umgebungsvariablen einstellen unter Windows 7 klappt nicht Java Basics - Anfänger-Themen 2
nbergmann Installation unter jdk.java.net: Keine ZIP-Datei zum entpacken Java Basics - Anfänger-Themen 2
thor_norsk Datentypen unter Java Java Basics - Anfänger-Themen 3
R Array mit Unter- und Obergrenze ganze Zahlen dazwischen erscheinen nicht Java Basics - Anfänger-Themen 1
U BestPractise für Deployment unter Windows gesucht Java Basics - Anfänger-Themen 12
W Random Zahl unter Berücksichtung eines Durchschnitts Java Basics - Anfänger-Themen 7
B Java Mail -> Mail senden, ist aber nich in IMAP unter "Gesendet" Java Basics - Anfänger-Themen 3
D Wert des Arrays unter Bedingungen ändern Java Basics - Anfänger-Themen 1
M Speichern unter. Java Basics - Anfänger-Themen 11
L Linux Befehle unter Windows in Eclipse ausführen Java Basics - Anfänger-Themen 3
J ImagaIO funktioniert nicht unter Ubuntu Java Basics - Anfänger-Themen 23
E Knoten eines Baumes unter Bedinung zählen Java Basics - Anfänger-Themen 2
J Punkt auf,über,unter oder zwischen 2 Geraden Java Basics - Anfänger-Themen 14
B Klassen Alle Unter-Objekte durchlaufen in der Hauptklasse Java Basics - Anfänger-Themen 10
F Console command unter Linux Java Basics - Anfänger-Themen 7
C GUI Programmierung unter Windows mit Java womit? Java Basics - Anfänger-Themen 11
D Einen Wert unter einen ActionListener weitergeben Java Basics - Anfänger-Themen 1
S Compiler-Fehler javac hat Probleme mit Paketen unter OSX Java Basics - Anfänger-Themen 2
N Eclipse - eigene Icons unter ClassPath Resource Java Basics - Anfänger-Themen 0
G Erste Schritte Unter Mac "Path" anpassen .bash_profile? Java Basics - Anfänger-Themen 5
C Java stellt unter Windows keine Umlaute dar Java Basics - Anfänger-Themen 9
J Ordner unter Windows Verstecken Java Basics - Anfänger-Themen 2
F Erste Schritte Unter Windows programmieren und dann auf Linux laufen lassen Java Basics - Anfänger-Themen 4
Z Gleiches Verzeichnis für class und java unter Windows Muss? Java Basics - Anfänger-Themen 11
Bluedaishi Dateien Lassen sich unter windows nicht löschen Java Basics - Anfänger-Themen 8
W Datei wird aus resources unter Windows nicht kopiert Java Basics - Anfänger-Themen 1
S Datei einlesen - Dateipfad unter Linux anpassen Java Basics - Anfänger-Themen 12
A Java IDE unter 400mb?? Java Basics - Anfänger-Themen 3
M JSF Projekt erstellen unter Eclipse Java Basics - Anfänger-Themen 7
A .jar unter Linux nutzen Java Basics - Anfänger-Themen 2
G Java unter Mac = schlecht | Windows = gut? Java Basics - Anfänger-Themen 14
M datei startet unter windows 7 nicht Java Basics - Anfänger-Themen 12
N .jar läuft nicht unter Windows 7 Starter Java Basics - Anfänger-Themen 4
F Exportieren als ausführbare Jar-Datei unter Ubuntu nicht möglich Java Basics - Anfänger-Themen 17
M in jTable schreiben unter Bedingung Java Basics - Anfänger-Themen 3
FrozeTee .java Dateien unter Windows 7 werden nicht angezeigt Java Basics - Anfänger-Themen 7
J Erste Schritte Speichern / Speichern unter / title Frame Java Basics - Anfänger-Themen 5
S Erste Schritte import für andere Klassenfiles verfügbar machen? (Java unter Eclipse) Java Basics - Anfänger-Themen 8
A Probleme mit JAR-Datei-Erstellung unter Eclipse Java Basics - Anfänger-Themen 23
S Umgebungsvariablen unter Windows XP Java Basics - Anfänger-Themen 6
S Classpath Libraries werden unter Linux nicht erkannt Java Basics - Anfänger-Themen 5
H speichern unter (JFileChooser) Java Basics - Anfänger-Themen 2
B Javadoc-Befehl unter Ubuntu Java Basics - Anfänger-Themen 2
Z Umgebungsvariable PATH-Umgebungsvariable unter Windows 7 Java Basics - Anfänger-Themen 27
V mehrfachvererbung unter interfaces Java Basics - Anfänger-Themen 10
Z [TrayIcon] Transparent unter Linux Java Basics - Anfänger-Themen 10
L Farbe unter Cursor bestimmen Java Basics - Anfänger-Themen 5
D Pfadangabe unter windows Java Basics - Anfänger-Themen 7
K kan 64Bit Version unter Win7Pro64 nicht installieren Java Basics - Anfänger-Themen 12
J File unter Linux Java Basics - Anfänger-Themen 8
J JDK installieren JRE unter Windows7 64bit Java Basics - Anfänger-Themen 8
C Mehrere Zeilen unter ~.showMessageDialog Java Basics - Anfänger-Themen 12
F getProperty() unter 64bit Java Basics - Anfänger-Themen 2
J Erstellte .jar unter 32 bit funktioniert nicht bei 64 bit Java Basics - Anfänger-Themen 4
G jar unter MeeGo installieren Java Basics - Anfänger-Themen 3
VfL_Freak Applikation läuft nicht unter Windows7 "platform not supported" Java Basics - Anfänger-Themen 15
R Programm gibt keine Reaktion unter Eclipse auf Mac Java Basics - Anfänger-Themen 13
I Java Programm unter Linux ausführen Java Basics - Anfänger-Themen 2
J Java Tool unter Windows ausführen Java Basics - Anfänger-Themen 8
H archive vergleichbarer Paramter unter Tag Object mit Parameter codetype="application/java-vm" Java Basics - Anfänger-Themen 3
C Windows Java unter Unix Java Basics - Anfänger-Themen 2
M Importieren von "IO.class" unter Eclipse Java Basics - Anfänger-Themen 4
G Problem mit einem Programm unter Win7 Java Basics - Anfänger-Themen 2
M Problem mit relativen Pfad unter Linux Java Basics - Anfänger-Themen 5
J Classpath bestimmen, unter Windows 7 Java Basics - Anfänger-Themen 2
S Random zahlen mit unter und obergrenze Java Basics - Anfänger-Themen 3
L Lucene Classpath unter linux setzen Java Basics - Anfänger-Themen 8
M Icons etc. werden unter Linux nicht gefunden Java Basics - Anfänger-Themen 6
C setResizable(false) unter NetBeans Java Basics - Anfänger-Themen 3
M Java einrichten unter Windows 7 Java Basics - Anfänger-Themen 12
C Wav-Sound nur unter Window Java Basics - Anfänger-Themen 5
B Classpath setzen - UNTER MAC OS X Java Basics - Anfänger-Themen 2
A 2 Monitore unter Java Java Basics - Anfänger-Themen 2
Y BufferdImage schreiben, unter Vista gehts, unter Ubuntu nicht... Java Basics - Anfänger-Themen 9
U Speichern unter button programmieren Java Basics - Anfänger-Themen 12
T Einfache Textausgabe .java unter OS X Java Basics - Anfänger-Themen 13
K Terminal Befehl mit Java unter Mac ausführen Java Basics - Anfänger-Themen 18
R .jar läuft nicht unter Linux Java Basics - Anfänger-Themen 11
D Class not found fehler beim ausführen unter konsole : / Java Basics - Anfänger-Themen 2
B Java Datei unter Solaris kompilieren Java Basics - Anfänger-Themen 2
T Drucken von Listen bestehend aus Grafik und Text (unter swing) Java Basics - Anfänger-Themen 7
C Windows Look and Feel unter Linux Java Basics - Anfänger-Themen 10
K Export Eclipse-Project unter MAC OS X Java Basics - Anfänger-Themen 2
F jar Datei unter Vista 64 bit Java Basics - Anfänger-Themen 2
schroedi JAVA_HOME setzen unter Debian Java Basics - Anfänger-Themen 8
J Eine JAR unter Linux starten ... Java Basics - Anfänger-Themen 15
Q Wie öffne ich einen "Speichern unter" - Dialog? Java Basics - Anfänger-Themen 2
J Software problem unter VISTA Java Basics - Anfänger-Themen 3
M Was versteht man unter Java einen Package ? Java Basics - Anfänger-Themen 17
B Einrichtung / Installation unter Linux Java Basics - Anfänger-Themen 4
S Shell Script ausführen unter Java Java Basics - Anfänger-Themen 5
M JVLC unter Windows [geloest] Java Basics - Anfänger-Themen 5
M Problem mit Java unter Vista 64 Java Basics - Anfänger-Themen 4
M alle Zahlen unter 50, die wo gteilt durch 2 Java Basics - Anfänger-Themen 12
P Mit extra VM starten / Batch-Datei / Unter Linux? Java Basics - Anfänger-Themen 22
G java version umstellen von 1.4 auf 1.6 unter linux Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben