Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ein Objekt and eine Methode übergeben zwei Schreibweisen?
Ich habe vor kurzem zwei verschiedene Schreibweisen gesehen, wie es möglich ist ein Objekt an eine Methode zu übergeben....
Nehmen wir an, wir haben die Methode:
Java:
public void setObjekt (Objekt o){
}
//außerdem kann man schreiben
public void setObjekt (new Objekt()){
}
//Jetzt hat man die Möglichkeit, diese beim Aufruf so //zu schreiben:
Objekt obj = new Objekt();
obj.setObjekt(new Objekt());
//oder
obj.setObjekt(Objekt o);
Macht das irgendeinen unterschied, wie einer Methode das Objekt übergeben wird, oder gibt es eine Bevorzugte Schreibweise?
public void setObjekt (new Objekt()){
}
obj.setObjekt(Objekt o);
werden dir so wie sie sind sofort um die Ohren fliegen, das sind schlicht und einfach Syntaxfehler. Ansonsten bin ich mir dem Tenor der Frage noch nicht allzu sicher, glaube allerdings, dass du Fragen willst ob es hier Unterschiede gibt:
Java:
Object object = new Object();
processObject(object);
processObject(new Object());
Hier wird eine Methode erstellt mit dem Namen "paintComponent".
Dies ist ja anscheinend der Konstruktor der Superklasse. (das denke ich, wegen dem Aufruf super.paintComponent)
Dieser wird ein Graphics Objekt übergeben, jedoch, wo wird dieses instanziert mit dem "new" Operator
oder muss dies gar nicht instanziert werden?
Hier wird eine Methode erstellt mit dem Namen "paintComponent".
Dies ist ja anscheinend der Konstruktor der Superklasse. (das denke ich, wegen dem Aufruf super.paintComponent)
mit super greifst du wie du richtig gesagt hast auf die Superklasse zu, allerdings nicht auf den Konstruktor sondern speziell rufst du die Methode paintComponent auf der Superklasse auf.
Hier hast du dir ein sehr spezielles Beispiel rausgesucht. Diese paintComponent wird intern von der JavaRuntime aufgerufen. Und auch intern wird dieses Graphics-Objekt erstellt.
(Deshalb sollte man niemals mit getGraphics() sein eigenes Graphics-Objekt holen, denn das "interne" wird stets neu erstellt.)
Wann wird die paintComponent aufgerufen? Wenn Java es für nötig erachtet, d.h. falls das Fenster verdeckt wurde und wieder aufgedeckt wird, oder falls du repaint() aufgerufen hast. (Wobei repaint() auch mehr eine "Bitte" als ein Befehl darstellt.)
mit super greifst du wie du richtig gesagt hast auf die Superklasse zu, allerdings nicht auf den Konstruktor sondern speziell rufst du die Methode paintComponent auf der Superklasse auf.
Jedoch benötigt man doch eigentlich gar keinen super Befehl, um auf eine Methode der Superklasse zuzugreifen, es besteht doch die Möglichkeit, auf diese einfach mit dem ganz normalen Methodennamen zuzugreifen..
Jedoch benötigt man doch eigentlich gar keinen super Befehl, um auf eine Methode der Superklasse zuzugreifen, es besteht doch die Möglichkeit, auf diese einfach mit dem ganz normalen Methodennamen zuzugreifen..
oder etwa nicht?
falls du einfach paintComponent aufrufen würdest, zum Beispiel in obigem Szenario, würde das einen Stackoverflow verursachen, denn die du überschreibst ja gerade paintComponent hier.
Anders gesagt: Hier möchte man etwas in paintComponent schreiben, damit etwas gezeichnet wird, aber man möchte nicht den schon vorhanden Code von der Superklasse, welcher in paintComponent steht "wegwerfen", sondern man möchte sozusagen seinen eigenen Code ergänzen, deshalb ruft man zuerst den "alten" Code auf (durch super) und ergänzt dann den Eigenen.