Warum genau braucht man Interfaces?

Status
Nicht offen für weitere Antworten.

bigbasti

Mitglied
Hallo zusammen,

einmal vorweg, warum man die Interfaces Allgemein braucht ist mir klar, sie sollen Schnittstellen zwischen verschiedenen Programmen (und Klassen?) schaffen.

Aber die Anwendung will mir nicht ganz in den Kopf gehen!!

Ich arbeite mich momentan durch das java Kompendium von Markt und Technik und bin grad in dem Kapitel mit den Interfaces und verstehe das Beispiel nicht genau:

Folgendes Interface:
Code:
interface Zeichenbar{
   public abstract void zeichnen();
}

Code:
abstract class Form{
   public abstract double umfang();
   public abstract double flaeche();
}

Dieses Interface wird in den verschiedenen Klassen eingebunden:

Code:
class Kreis extends Form implements Zeichenbar{
   [...]Formeln zur Kreisberechnung[...]

   public void zeichnen(){
      System.out.print("Zeichne einen Kreis");
   }
}

Code:
class Rechteck extends Form implements Zeichenbar{
   [...]Formeln zur Flächenberechnung[...]

   public void zeichnen(){
      System.out.print("Zeichne einen Rechteck");
   }
}

Hier taucht schon die erste Frage auf: Warum soll ich ein Interface schreiben, wenn ich die Methoden, die es bereitstellt sowieso überschreiben muss? (zeichnen) dann kann ich doch eigentlich das interface weglassen und einfach nur die Methode in den Klassen implemetieren? oder nicht?

Code:
class Schnittstellen{
   public static void main(String[] args){
      Zeichenbar[] zElemente = new Zeichenbar[2];
   
      zElemente[0] = new Kreis(3); //3 = radius
      zEmelente[1] = new Rechteck(3,5);

      for(int i = 0; i < zElemente.length; i++){
         zElemente[i].zeichnen();
      }
   }
}

Ich verstehe auch nicht so ganz warum ich hier zElemente vom Typ Zeichenbar mache? und warum ich in diesem Array dann auch Objekte vom Typ Kreis und Rechteck speichern kann.

Oder liegt das daran, dass ich in die Klassen Rechteck und Kreis das Interface implementiere und Kreis und Rechteck somit instanceof Zeichenbar werden? :confused:

Wäre um jede Hilfe dankbar, mir gehts hier nur ums Verständnis!

Danke im Vorraus!
 

HLX

Top Contributor
Hier taucht schon die erste Frage auf: Warum soll ich ein Interface schreiben, wenn ich die Methoden, die es bereitstellt sowieso überschreiben muss? (zeichnen) dann kann ich doch eigentlich das interface weglassen und einfach nur die Methode in den Klassen implemetieren? oder nicht?
Du könntest andere zeichenbare Objekte haben, die nicht von Form abgeleitet sind. Wenn du dann z.B. ein Malprogramm hast, kannst du mit diesem alle zeichenbaren Objekte zeichnen, ohne wissen zu müssen, von welchem konkreten Typ sie sind.

Code:
public class MyPainter {

       public static void paint(Zeichenbar zeichenbar) {
                zeichenbar.zeichnen();
       }
}
 

bigbasti

Mitglied
Ah, super danke!

Bin dem Verständnis ein ganzes Stück näher gekommen!

Also könnte ich wenn ich ein Zeichenbar[] Array habe dort alle Objekte lagern, die das interface Zeichenbar implementiert haben?

MfG
 

Verjigorm

Top Contributor
Ein Interface bringt dir (normalerweise, gibt Ausnahmen!) nix, wenn du es nur in einer einzigen klasse implementierst.
Der Nutzen wird erst deutlich, wenn mehrere (verschiedene) Klassen dieses Interface implementieren.
 

Zed

Bekanntes Mitglied
Das würde auch gehen

Zeichenbar theObject = new Kreis(3);

logischerweise kannst du dann auch nur auf die im Interface definierten Methoden zugreifen
 

Verjigorm

Top Contributor
Was aber nicht dem Sinn und Zweck entspricht, gegen Schnittstellen zu programmieren.

Wann, wie, wo das Ganze Sinn macht, ist natürlich ein anderes Thema.
Ich sagte nur, dass man es "kann", weil es sich von meinem Vorredner so anhörte, als ginge nichts anderes.
Wenn es nicht gehen sollte, dann würde es nicht gehen.
Da es aber funktioniert, heisst es, es muss einen Grund dafür geben und somit darf es auch angewandt werden :)
 

Zed

Bekanntes Mitglied
Wann, wie, wo das Ganze Sinn macht, ist natürlich ein anderes Thema.
Ich sagte nur, dass man es "kann", weil es sich von meinem Vorredner so anhörte, als ginge nichts anderes.
Wenn es nicht gehen sollte, dann würde es nicht gehen.
Da es aber funktioniert, heisst es, es muss einen Grund dafür geben und somit darf es auch angewandt werden :)


Ja geht ich hab es auch schon genutzt. Manchmal muss es sein wenn ein Object eine Extrawurst braucht.

Code:
List<Zeichenbar> theList <- Hier sind mal sehr viel verschiedene Kreise,Rechtecke etc. drin.

for(Zeichenbar theObject : theList ){
if(thObject instanceof Kreis){
 Kreis theKreis = (Kreis) theObject;
}
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Kann mir jemand wörtlich erklären, was in dem Code genau passiert? Java Basics - Anfänger-Themen 1
B 49-bit-zahl mit genau 6 Einsen bauen? Java Basics - Anfänger-Themen 21
H BlueJ: was genau ist hier der Fehler? Java Basics - Anfänger-Themen 14
berserkerdq2 Sende eine Nachricht an den Client und leere den Ausgabestorm, was ist damit genau gemeint? Java Basics - Anfänger-Themen 3
U Wie genau funktioniert der ! Operator Java Basics - Anfänger-Themen 3
J Hallo zusammen , was macht diese Methode hier genau? Java Basics - Anfänger-Themen 3
M Was wird hier genau getestet? Java Basics - Anfänger-Themen 9
jhCDtGVjcZGcfzug Was genau ist mit diesem Quellcode gemeint? Java Basics - Anfänger-Themen 5
P Was genau bringt mir es ein Array in eine Liste zu bringen Java Basics - Anfänger-Themen 3
S Was bewirkt ganz genau throw hinter einem Funktionsnamen? Java Basics - Anfänger-Themen 14
B Webhooks - was genau ist das und was kann damit JAVA Java Basics - Anfänger-Themen 5
B OCR - Rechnungserkennung, wie geht das genau? Java Basics - Anfänger-Themen 59
L Was genau macht -> Java Basics - Anfänger-Themen 18
Dawinartor Erste Schritte Was genau steckt dahinter? Java Basics - Anfänger-Themen 7
J Was genau macht die Methode close() im InputStream? Java Basics - Anfänger-Themen 5
C Polymorphie Was genau ist Polymorphie und wann genau sollte man es verwenden? Java Basics - Anfänger-Themen 9
A Was genau ist ein Standardkonstruktor Java Basics - Anfänger-Themen 10
B Wie funktionieren diese Methoden in diesem Sortierverfahren genau? Java Basics - Anfänger-Themen 2
B Für gesamte Schleife genau X Sekunden benötigen Java Basics - Anfänger-Themen 1
J TabelView - Kann mir jemand die Sequenz genau erklären ? Java Basics - Anfänger-Themen 2
L Was genau macht "public static void" ? Java Basics - Anfänger-Themen 12
G Methoden Was genau macht die Methode light.setInfluencingBounds ? Java Basics - Anfänger-Themen 5
H Wer genau ist 'Er'? Java Basics - Anfänger-Themen 4
K Was macht hier genau return? Java Basics - Anfänger-Themen 2
B Was genau ist getClass().getRessouce() Java Basics - Anfänger-Themen 1
Y Wie setze ich genau eine Stückliste (UML) in Java um? Java Basics - Anfänger-Themen 9
D Was genau ist JDBC? Java Basics - Anfänger-Themen 2
K Code vereinfachen mit Schleife, aber wie genau? Java Basics - Anfänger-Themen 3
L Jarfiles packen, wie geht's genau? Java Basics - Anfänger-Themen 12
D Wann genau nutze ich ein solches Interface? Java Basics - Anfänger-Themen 3
K Wann genau brauche ich die Anweisung gleich null? Java Basics - Anfänger-Themen 10
J keyListener - Genau 1 Aktion soll bei 1 Tastenausdruck ausgeführt werden Java Basics - Anfänger-Themen 11
A Wenn genau welche Liste verwenden? Java Basics - Anfänger-Themen 6
S Erste Schritte Konstruktor - wie genau funktioniert der Code? Java Basics - Anfänger-Themen 16
J Klickposition genau bestimmen Java Basics - Anfänger-Themen 12
N aktuelle Datum Mikrosekunden genau bestimmen Java Basics - Anfänger-Themen 8
S Dezimale Konstanten sind immer positiv oder null - was heisst das den genau? Java Basics - Anfänger-Themen 2
F Was soll dieses Programm genau machen ? Java Basics - Anfänger-Themen 9
D Wie genau programmiere ich eine Assoziationsklasse? Java Basics - Anfänger-Themen 3
D Wie genau kann ich in Java Komponenten entwickeln? Java Basics - Anfänger-Themen 6
D Wann genau abstrakte Klasse und wann ein Interface verwenden? Java Basics - Anfänger-Themen 4
D Was genau bedeutet und bewirkt dieses @override? Java Basics - Anfänger-Themen 15
M Was ist genau eine Abstraktion in java Java Basics - Anfänger-Themen 3
J Was genau davon ist Anweisung, was Deklaration? Java Basics - Anfänger-Themen 2
A Was bedeutet folgende Programmcodezeile genau Java Basics - Anfänger-Themen 6
B Zeitmessung nicht genau genug Java Basics - Anfänger-Themen 11
L Hilfe, ich versteh nicht was mein Prof genau von mir will! Java Basics - Anfänger-Themen 9
C Wie genau geht man bei der Konzeptionierung vor? Java Basics - Anfänger-Themen 5
P Was genau bedeutet Feld Java Basics - Anfänger-Themen 3
P Was genau bedeutet "public static void main(String[] ar Java Basics - Anfänger-Themen 10
S Stack.pop() wie genau funktioniert das? Java Basics - Anfänger-Themen 3
D Mathematik in Java - genau? Java Basics - Anfänger-Themen 6
X Was genau heißt "public static void main(String[] args) Java Basics - Anfänger-Themen 4
X wie bekomme ich durch Eingabeaufforderung definierte double in einen Befehl, welcher 3 erwartete double braucht? Java Basics - Anfänger-Themen 3
celta_vigo Programmieranfänger braucht Rat zu mehr Praxisnähe Java Basics - Anfänger-Themen 8
K Für was braucht man die left und right shift operatoren? Was bringen die, also welchen Zweck haben die? Java Basics - Anfänger-Themen 15
D Zahlentabelle Anfänger braucht Hilfe Java Basics - Anfänger-Themen 1
U anfänger braucht hilfe . wir konnten die aufgaben nicht beantworten Java Basics - Anfänger-Themen 5
Devin Wie lange braucht man um Java zu beherrschen und wie kann man es am schnellsten erlernen? Java Basics - Anfänger-Themen 7
L Anfänger braucht Hilfe - Stecke beim Lernen fest Java Basics - Anfänger-Themen 10
ruutaiokwu Bluetooth-Zugriff, braucht es dazu plattformabhängige Libraries oder kann das Java mittlerweile selbst? Java Basics - Anfänger-Themen 10
S Ein Java Anfänger braucht Hilfe Java Basics - Anfänger-Themen 5
T Erste Schritte Endlosschleife & wozu braucht man /* und */ Java Basics - Anfänger-Themen 19
F Anfänger braucht Hilfe :) Java Basics - Anfänger-Themen 3
D Anfänger braucht Hilfe Java Basics - Anfänger-Themen 2
V Erste Schritte Java-Anfänger braucht Hilfe bei Arrays Java Basics - Anfänger-Themen 19
J Kleiner Taschenrechner! Anfänger braucht Hilfe :( Java Basics - Anfänger-Themen 2
K Wer braucht die Java3d Bins ? Java Basics - Anfänger-Themen 1
I totaler Anfänger braucht Hilfe Java Basics - Anfänger-Themen 8
T Hallo anfänger braucht Hilfe :D Java Basics - Anfänger-Themen 7
Thallius Best Practice Umsteiger braucht Tipps zur Bildverarbeitung Java Basics - Anfänger-Themen 1
A Erste Schritte Anfängerin braucht Hilfe Java Basics - Anfänger-Themen 5
C Anfänger braucht Hilfe bei Schularbeit Java Basics - Anfänger-Themen 3
F Anfänger braucht Hilfe Java Basics - Anfänger-Themen 24
F Wozu braucht man array list? Java Basics - Anfänger-Themen 29
L Wieviel Speicher braucht ein Pixel? Java Basics - Anfänger-Themen 14
T Java Applet braucht mehrere Minuten zu Start Java Basics - Anfänger-Themen 5
L Klassen Anfänger braucht Hilfe! Probleme mit Javakara.jar Java Basics - Anfänger-Themen 25
J OOP Warum braucht man den Stack Java Basics - Anfänger-Themen 3
D ActionListener braucht zwei Klicks auf Button??? Java Basics - Anfänger-Themen 2
M Erste Schritte Anfänger braucht Denkanstoß für Schulprojekt Java Basics - Anfänger-Themen 21
W Anfänger braucht Hilfe bei Hausübung! Sprachauswahl? Wie? Java Basics - Anfänger-Themen 9
D Anfänger braucht Hilfe:Interface Java Basics - Anfänger-Themen 14
F Wo zu braucht man Kommentar "TODO"??? Java Basics - Anfänger-Themen 20
0 Wozu braucht man Generics? Java Basics - Anfänger-Themen 1
T Interfaces: Braucht man abstrakte Klassen eigentlich noch? Java Basics - Anfänger-Themen 3
D Was ist ein StringReader und wofür braucht man ihn? Java Basics - Anfänger-Themen 2
H Was braucht man oft in Java? Java Basics - Anfänger-Themen 9
X Anfänger braucht hilfe! Java Basics - Anfänger-Themen 4
G Textfeld und Label in einem Tab? Anfänger braucht Hilfe Java Basics - Anfänger-Themen 3
G Für was braucht man den This-operator Java Basics - Anfänger-Themen 3
hedges Prog braucht lange, schlecht programmiert? Java Basics - Anfänger-Themen 3
S Blutiger Java Anfänger braucht dringend Hilfe Java Basics - Anfänger-Themen 4
M Braucht jede Klasse eine Schnittstelle ? Java Basics - Anfänger-Themen 4
G unwissender braucht Hilfe bei Umschreibung Java Basics - Anfänger-Themen 4
M noob braucht hilfe Java Basics - Anfänger-Themen 3
E Anfänger braucht Hilfe Java Basics - Anfänger-Themen 6
L JFrame öffnet 2tes JFrame, welches Daten vom 1sten braucht. Java Basics - Anfänger-Themen 21
T Vokabelbuch programmieren - Anfänger braucht Hilfe! Java Basics - Anfänger-Themen 17
M j2ee: was braucht es alles dazu? Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben