@override

.maik.

Bekanntes Mitglied
Abend.
Ich brauche dringend eure Hilfe. Ich muss mich bis morgen im Bereich SWING/AWT auskennen. Ich gucke mir momentan die kapitel auf insel dazu an . nun wird häufiger, wie hier :
Java:
import java.awt.event.*; 
import javax.swing.*; 
 
public class CloseWindowWithAdapter 
{ 
  public static void main( String[] args ) 
  { 
    JFrame f = new JFrame(); 
    f.setSize( 400, 400 ); 
    f.setVisible( true ); 
 
    f.addWindowListener( new CloseWindowAction() ); 
  } 
} 
 
class CloseWindowAction extends WindowAdapter 
{ 
  @Override 
  public void windowClosing( WindowEvent e ) { System.exit(0); } 
}

@override benutzt. habs auch schon gegooglelt, aber leider nichts passendes gefunden . kann mir da jemand bitte erklären was das ist.

danke danke

lg
 

.maik.

Bekanntes Mitglied
ist das denn wirklich notwendig. ich meine wenn die methode die selbe signatur besitzt, wird die spuerklassen methode doch automatisch überschireben .

lg

danke für die schnelle antwort
 

DerEisteeTrinker

Bekanntes Mitglied
Gute Frage, ob es notwendig ist. Da ich mit Eclipse arbeite, schreibt es die IDE einfach hin und es macht die Anwendung weder schneller noch langsamer, also lasse ich es stehen.
 

XHelp

Top Contributor
Der Sinn dabei ist: du sagst im Klartext "ja, ich will es wirklich überschreiben und ich habe nicht aus Versehen die Methode genau so genannt"
 

.maik.

Bekanntes Mitglied
ja ok danke. aber in diesem beispiel hier: (sorry wegen soviel Code)
Java:
import java.awt.event.*; 
import javax.swing.*; 
 
public class CloseWindowWithInnerClass extends JFrame 
{ 
  public CloseWindowWithInnerClass() 
  { 
    setSize( 400, 400 ); 
 
    addWindowListener( new WindowAdapter() { 
      @Override public void windowClosing( WindowEvent e ) { 
        System.exit( 0 ); 
      } 
    } ); 
  } 
 
  public static void main( String[] args ) 
  { 
    new CloseWindowWithInnerClass().setVisible( true ); 
  } 
}

verstehe ich nicht recht wie es funktioniert, dass die windowClosing Methode überschreiben wird. habe ich es richtig verstanden , dass man hinter dem konstruktor mit den {} Klammern Methoden überschireben kann. ist das die kurform dafür?
 

Haave

Top Contributor
ist das denn wirklich notwendig. ich meine wenn die methode die selbe signatur besitzt, wird die spuerklassen methode doch automatisch überschireben .
Zwingend notwendig ist die @Override-Annotation nicht, aber mir ist z.B. ein Fall bekannt, in dem sie helfen kann, Fehler zu vermeiden:

Stell dir vor, du hast eine Klasse A und eine Klasse B, die von A abgeleitet ist. Klasse A hat eine Methode foo(), B überschreibt diese Methode. Also so:
Java:
class A {
	void foo() {
		//irgendwas
	}
}

class B extends A {
	@Override
	void foo() {
		//irgendwas anderes, Klasse-B-Spezifisches
	}
}

Solltest du nun auf die Idee kommen, in der Oberklasse die Methode foo() aus irgendeinem Grund zu entfernen, wirst du vom Compiler eine Fehlermeldung erhalten, dass B eine Methode überschreiben will, die es gar nicht gibt.
Ohne die @Override-Annotation hingegen würde nach Entfernen von foo() aus A die Klasse B ganz normal eine Methode foo() haben, von der man nicht mehr wüsste, dass sie mal eine andere Methode überschreiben sollte.
 

DerEisteeTrinker

Bekanntes Mitglied
WindowAdapter ist eine abstrakte Klasse von der du eigentlich keine Instanz anlegen kannst. Diese abstrakte Klasse definiert, dass windowClosing() implementiert werden muss, deswegen halt zwingend das override. Mit dieser "Kurzform" legst du eine Instanz einer Klasse vom Typ WindowAdapter.
 

Cola_Colin

Top Contributor
ja ok danke. aber in diesem beispiel hier: (sorry wegen soviel Code)
Java:
import java.awt.event.*; 
import javax.swing.*; 
 
public class CloseWindowWithInnerClass extends JFrame 
{ 
  public CloseWindowWithInnerClass() 
  { 
    setSize( 400, 400 ); 
 
    addWindowListener( new WindowAdapter() { 
      @Override public void windowClosing( WindowEvent e ) { 
        System.exit( 0 ); 
      } 
    } ); 
  } 
 
  public static void main( String[] args ) 
  { 
    new CloseWindowWithInnerClass().setVisible( true ); 
  } 
}

verstehe ich nicht recht wie es funktioniert, dass die windowClosing Methode überschreiben wird. habe ich es richtig verstanden , dass man hinter dem konstruktor mit den {} Klammern Methoden überschireben kann. ist das die kurform dafür?

Das ist eine anonyme Klasse.

EDIT: Och ich bin ja soooo langsam :autsch:
 

.maik.

Bekanntes Mitglied
eine Frage wäre da noch: Wenn ich ein IconImage Objekt erzeuge, wie muss ich mir das vorstellen. Enthält das Objekt dann die Informationen, wie das Bild gemalt wird und beim aufruf von frame.setVisible(true) werden diese Informationen dann genutzt?
 

.maik.

Bekanntes Mitglied
hatte es mir da schon durchgelsen und nicht richtig verstanden . es wird eine icon objekt erzeut auf der basis eines bildes. nur was soll man sich darunter vorstellen?

lg
 

Simon_Flagg

Bekanntes Mitglied
@ maik: ich denke ein imageicon-objekt ist einfach nur eine schnittstelle, die du einer methode übergeben kannst, damit die dann auf das was dahinter passiert zugreifen kann, ein handle quasi, was imageicon genau macht: ka, hat mich noch nie richtig interessiert, du könntest aber im sourcecode von java nachschauen (src.zip im java-verzeichnis)

lg
 


Schreibe deine Antwort... und nutze den </> Button, wenn du Code posten möchtest...
Ähnliche Java Themen
  Titel Forum Antworten Datum
onlyxlia Was bedeutet das @Override? Java Basics - Anfänger-Themen 1
M Override zeigt keinen Effekt Java Basics - Anfänger-Themen 9
I equals (Override) mit eigener Exception (keine Runtime-Exception) Java Basics - Anfänger-Themen 9
S Warum @Override? Java Basics - Anfänger-Themen 2
S Compiler-Fehler not abstract and does not override Java Basics - Anfänger-Themen 9
M abstract method does not override or implement.... Java Basics - Anfänger-Themen 7
D Kapselung override Setter Java Basics - Anfänger-Themen 5
D Was genau bedeutet und bewirkt dieses @override? Java Basics - Anfänger-Themen 15
T Override klappt nochmal wie? Java Basics - Anfänger-Themen 3
B Annotation : @Override Java Basics - Anfänger-Themen 9
K Interface implementieren @Override Java Basics - Anfänger-Themen 8
U override Problem mit exception Java Basics - Anfänger-Themen 5
G Anfängerfrage zu "@Override" Java Basics - Anfänger-Themen 5
S @ override + noch was Java Basics - Anfänger-Themen 3
G JDialog + p aintComponent-Override Java Basics - Anfänger-Themen 3
R Fehler: "Class XY ist not abstact and does not override Java Basics - Anfänger-Themen 3
B Eclipse 3.2 + @override Java Basics - Anfänger-Themen 3
K Override in Interfaces Java Basics - Anfänger-Themen 11
K <class> is not abstract and does not override abstract Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben