Hallo zusammen. Ich lerne seit einigen Wochen Java bei der SGD. Jetzt bin ich grad bei dem 2ten Heft. Als ich meine Einsendeaufgaben eingereicht hatte, kamen sie wieder zurück mit der Bemerkung ich sollte doch nochmal die Antworten überarbeiten. Hier mal die Fragen:
1Erläutern Sie (ggf. an einem Beispiel) Was ist ein anonymes Objekt ?
2Erläutern Sie anhand von eigenen Beispielen, wie man in Java auf ein allgemein sichtbares Datenelement bzw. eine allgemeine sichtbare Methode zugreift (eine Methode aufruft). Berücksichtigen Sie zwei Grundsätzliche unterschiedliche Varianten des Zugriffs, die sich aus der Deklaration des Datenelements bzw. der Methode ergeben.
3: ) Erklären Sie: Worin besteht der Unterschied zwischen der Deklaration und der Signatur einer Methode ?
Das Thema wurde hier schon mal aufgeführt: http://www.java-forum.org/de/viewtopic.php?t=50861&highlight=anonymes+objekt
Hier sind mal meine Antworten.
zu 1:
Ist ein Objekt zu dem es keine instanzvariable gibt. Anonyme Objekte werden ausschließlich mit new erzeugt und müssen sofort an methoden übergegeben werden. Der Zugriff auf das so erstellte Objekt ist nur innerhalb der methode möglich, an der es übergeben wurde. Wenn diese Methode das Objekt ihrerseits nicht in einer Variable dauerhaft speichert, so kann nach dem Methodenaufruf nicht mehr darauf zugegriffen werden.
Beispiele
zu 2:
----------------------------------------------------------------------------------------------------------------------
Statischer Aufruf
zu 3:
Signatur:
Die Signatur einer Methode besteht aus dem Methodennamen und den optional in der Methodenklammer deklarierten Parameter, die jeweils einen spezifischen Datentyp besitzen.
In einer Java-Klasse darf immer nur eine einzige Methode mit einer Signatur definiert werden.
Deklaration:
Dabei wird eine Variable des Typs Typname mit dem Namen Variablenname angelegt. Variablendeklarationen dürfen in Java an beliebiger Stelle im Programmcode erfolgen.
bei der Aufgabe 3, bekomm ich es einfach nicht hin eine vernüftige erklärung zu finden. Soll heißen, ich kann es nicht beschreiben was der Unterschied ist.
Also meine Frage ist jetzt eigentlich, ob das so okay ist. Passen die Antworten zu den Fragen? Nicht das der Lehrer es wieder zurück schickt.
Danke für eure Hilfe.
MFG
Carsa
1Erläutern Sie (ggf. an einem Beispiel) Was ist ein anonymes Objekt ?
2Erläutern Sie anhand von eigenen Beispielen, wie man in Java auf ein allgemein sichtbares Datenelement bzw. eine allgemeine sichtbare Methode zugreift (eine Methode aufruft). Berücksichtigen Sie zwei Grundsätzliche unterschiedliche Varianten des Zugriffs, die sich aus der Deklaration des Datenelements bzw. der Methode ergeben.
3: ) Erklären Sie: Worin besteht der Unterschied zwischen der Deklaration und der Signatur einer Methode ?
Das Thema wurde hier schon mal aufgeführt: http://www.java-forum.org/de/viewtopic.php?t=50861&highlight=anonymes+objekt
Hier sind mal meine Antworten.
zu 1:
Ist ein Objekt zu dem es keine instanzvariable gibt. Anonyme Objekte werden ausschließlich mit new erzeugt und müssen sofort an methoden übergegeben werden. Der Zugriff auf das so erstellte Objekt ist nur innerhalb der methode möglich, an der es übergeben wurde. Wenn diese Methode das Objekt ihrerseits nicht in einer Variable dauerhaft speichert, so kann nach dem Methodenaufruf nicht mehr darauf zugegriffen werden.
Beispiele
Code:
Kreis einKreis; <-fehlt!
<nicht anonym>
Kreis einKreis = new Kreis(...);
grafik.add(einKreis);
<anonym>
grafik.add(new Kreis(...) ); <- die Methode add der Klasse grafik kann mit dem Kreis was machen.
<- ab hier kann nicht mehr auf den Kreis zugegriffen werden
zu 2:
Code:
class InvokeMethod
{
public static void main( String args[] ) throws Exception
{
Point p = new Point( 10, 0 );
Method method = p.getClass().getMethod( "getX", null );
String returnType = method.getReturnType().getName();
System.out.print( "(" + returnType + ") " );
Object returnValue = method.invoke ( p, null );
System.out.println( returnValue );
}
}
Und die Ausgabe ist:
(double) 10.0
Statischer Aufruf
Code:
public class InvokeMain
{
public static void main( String args[] ) throws Exception
{
String nargs[] = new String[] { "-option", "Parameter" };
Method methode = Class.forName( "HasMain" ).getMethod( "main" ,
new Class[] {nargs.getClass()}) ;
methode.invoke( null, new Object[]{nargs} );
}
}
class HasMain
{
public static void main( String args[] )
{
System.out.println( "Hier bin ich." );
}
}
zu 3:
Signatur:
Die Signatur einer Methode besteht aus dem Methodennamen und den optional in der Methodenklammer deklarierten Parameter, die jeweils einen spezifischen Datentyp besitzen.
In einer Java-Klasse darf immer nur eine einzige Methode mit einer Signatur definiert werden.
Deklaration:
Dabei wird eine Variable des Typs Typname mit dem Namen Variablenname angelegt. Variablendeklarationen dürfen in Java an beliebiger Stelle im Programmcode erfolgen.
bei der Aufgabe 3, bekomm ich es einfach nicht hin eine vernüftige erklärung zu finden. Soll heißen, ich kann es nicht beschreiben was der Unterschied ist.
Also meine Frage ist jetzt eigentlich, ob das so okay ist. Passen die Antworten zu den Fragen? Nicht das der Lehrer es wieder zurück schickt.
Danke für eure Hilfe.
MFG
Carsa