Hallo zusammen,
ich habe ein Verständnisproblem bei einem einfachen
‚Hello Word‘-Applet:
import java.applet.*;
import java.awt.*;
public class HelloWorld extends Applet {
public void paint(Graphics g) {
g.drawString(„Hello world!“, 50, 25
}
}
Warum reicht es aus ein Graphic-Objekt mit Graphics g
zu deklarieren. Muß ein Objekt nicht auch noch
mit einem Konstruktor Graphics() allokiert und initialisiert
werden?
Hängt dies vieleicht damit zusammen, dass Graphics eine
abstrakte Klasse ist?
Danke vorab.
Warum reicht es aus ein Graphic-Objekt mit Graphics g
zu deklarieren. Muß ein Objekt nicht auch noch
mit einem Konstruktor Graphics() allokiert und initialisiert
werden?
Das muß es, aber nicht zwangsläufig von dir. Offensichtlich wird das Objekt hier von dem aufrufenden Prozess erzeugt und dir dann übergeben.
Hängt dies vieleicht damit zusammen, dass Graphics eine
abstrakte Klasse ist?
Nein. Aus einer abstrakten Klasse kann man grundsätzlich kein Objekt erzeugen. Du kannst aber eine Variable vom Typ einer abstrakten Klasse deklarieren und dieser dann alle abgeleiten Klassen zuweisen (upcast). Mit instanceof kannst du feststellen von welchem Typ (welcher abgeleiteten Klasse) das Objekt ist und per downcast wieder umwandeln.
Grüße, Robert