Instanz?

Status
Nicht offen für weitere Antworten.

Brain

Aktives Mitglied
Hallo!!!
Habe eine Frage: Was wird mit der zweiten Zeile bewirkt?
Code:
URL url = new URL(args[0]);
AudioClip clip = Applet.newAudioClip(url);
Ist das auch eine Insanz??

Kleines Besipiel:
Mit
Code:
Asdf obj = new Asdf();

wird ja eine Instanz, ein Objekt, erstellt.
Was passiert im ersten Code-Abschnitt??

Könnte ich auch "AudioClip clip = new AudioClip();" schreiben? Wenn ja, wie müsste ich dann weiterschreiben um das selbe Ergebnis zu bekommen?
 
Letztendlich ja. Allerdings wird die neue Instanz hier in einer Methode erstellt und von ihr zurückgegeben, nicht von einem Konstruktor...
 
Code:
AudioClip clip = Applet.newAudioClip(url);

Die statische (Klassen-) Methode newAudioClip der Klasse Applet
erzeugt eine Instanz der Klasse AudioClip dessen Daten
an der angegebenen URL zu finden sind. Die Buchstabensequenz "new"
in der Methode hat nichts mit dem Schlüsselwort "new " zu tun. :noe:

Die Methode könnte genausogut machUndGibMirMalNenAudioClip heißen.
Intern wird allerdings irgendwann einmal ein Konstruktor der Klasse
AudioClip mit "new AudioClip(.....)" aufgerufen, da die Instanz ja erzeugt
werden muß.

Du kannst
Code:
AudioClip clip = new AudioClip();
schreiben, wenn es einen parameterlosen, öffentlichen Konstruktor
der Klasse AudioClip gibt. Ob dem so ist weiß ich nicht (und ich
bin zu faul jetzt in der API nachzuschauen).

Ob und wie du die Audio-Datenreferenz einer Instanz von
AudioClip nach dessen Erzeugung ändern kannst, erfährst am besten
in der API
 
"Applet.newAudioClip( url )" ruft eine statische Methode namens "newAudioClip", welche als Argument eine URL erwartet, in der Klasse "Applet" auf.

Das hat nichts mit dem normalen "new" zu tun, es ist einfach ein ganz normaler ein Methodenaufruf, wie z.B. "Math.sqrt( 9.0 )".
 
Das "new" bei "AudioClip clip = Applet.newAudioClip(url);" verwirrt mich eigentlich nicht.

Was ich nicht genau verstehe, was der Ausdruck bewirkt. Ich weiß schon, dass es eine Methode ist, die eine URL braucht und die Methode in der Klasse Applet ist.

Was mich irritiert ist, dass links vom Gleichheitszeichen "AudioClip" und nach ihm "Applet" steht.

Wird durch den Ausdruck eine Instanz gebildet? Ein Objekt erstellt oder ist das irgendeine Verknüpfung?
 
Die Klasse Applet stellt eine Methode zur Verfügung, die eine
Instanz der Klasse AudioClip erzeugt und liefert.

Diese Methode wird aufgerufen. Ihr Ergebnis -- eine Referenz auf
die neu erzeugte Instanz der Klasse AudioClip -- wird danach
der lokalen Variablen clip zugewiesen die ja auch vom Typ AudioClip ist.

Daß in (oder durch) die Methode tatsächlich eine neue Instanz
eines AudioClips erzeugt wird ist anhand dieser Code-Zeilen noch
nicht erkennbat. Es könnte theoretisch ein bereits existierendes
Objekt geliefert werden.

Nur der Name newAudioClip legt die Vermutung nahe,
daß ein neues Objekt erzeugt wird.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben