Stellung von super()

Status
Nicht offen für weitere Antworten.
S

scooterJava

Gast
Ich verwende in einem Programm folgenden funktionierenden Code:

Code:
		@Override
		public void paint( Graphics oContext )
		{
			Image oPicture = null;
			oPicture = Toolkit.getDefaultToolkit().getImage( getClass().getResource( sImage ) );
			oContext.drawImage( oPicture, 0, 0, this.getWidth(), this.getHeight(), this );
			super.paint( oContext );
		}

Hier geht es um ein JPanel, dem ein Hintergrundbild zugewiesen wird.

Interessant ist für mich, dass der Aufruf von super() nicht gleich zu Anfang zu stehen braucht. In dieser Methode ist es sinnvoll, super() erst zum Schluss mit dem geänderten oContext aufzurufen (an den Anfang gestellt, würde sich sonst nichts ändern). Allerdings wurde mir immer erzählt, dass super() in einer Methode immer als erste Anweisung zu stehen habe - Eclipse meldet mir aber keinen Fehler, was es sonst tut, wenn super() nicht die erste Anweisung ist.

Kann mir erklären, wie es zu dem unterschiedlichen Verhalten kommt?
 

tfa

Top Contributor
Das verwechselst du mit dem super-Aufruf in einem Konstruktor, der an erster Stelle stehen muss. Bei Methoden ist das völlig frei.
 

Der Müde Joe

Top Contributor
>Kann mir erklären, wie es zu dem unterschiedlichen Verhalten kommt?

Im Konstruktor muss super an erster stelle sein
In der Methode kann man immer die super-Methode aufrufen

>Hier geht es um ein JPanel

besser paintComponent überschreiben als paint (wenn ich mich nicht täusche)
 

eliot

Bekanntes Mitglied
Der Müde Joe hat gesagt.:
>Kann mir erklären, wie es zu dem unterschiedlichen Verhalten kommt?

Im Konstruktor muss super an erster stelle sein
In der Methode kann man immer die super-Methode aufrufen

>Hier geht es um ein JPanel

besser paintComponent überschreiben als paint (wenn ich mich nicht täusche)

Richtig!
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben