Fragen zum Polymorphismus
Fragen zum Polymorphismus javafrage Sun, 11/25/2018 - 16:43- 1275 views
1. Polymorphismus (Zuweisungen, Methodenaufrufe)
1. Polymorphismus (Zuweisungen, Methodenaufrufe)Die main() Methode der Klasse Punkt3D arbeitet mit Objekten der Klassen Punkt2D und Punkt3D.
public class Punkt2D { private double x; private double y; public Punkt2D(double xx, double yy) { x = xx; y = yy; } /** * Diese Methode erzeugt eine Zeichenkette der x * und y Koordinate * @return Zeichenketten mit Belegung */ public String drucken() { String s = "x:"+ x + " y: " +y; return s; } }// Ende der Klase Punkt2D public class Punkt3D extends Punkt2D{ private double z; public Punkt3D(double xx, double yy, double zz) { super(xx,yy); z = zz; } /** * Diese Methode erzeugt eine Zeichenkette der x,y und Z * Koordinate * @return Zeichenketten mit Belegung */ public String drucken() { String s = super.drucken() + "z:" +z; return s; } public static void main(String[] args) {
Punkt2D[] feld= new Punkt2D[2];
feld[0] = new Punkt2D(11.1,22.2);
feld[1] = new Punkt3D(11.1,22.2,33.3); Punkt2D p2d0 = feld[0]; Punkt2D p2d1 = feld[1]; // Analyse der Druckenmethode System.out.println(p2d0.drucken()); // Was wird ausgegeben? System.out.println(p2d1.drucken()); // Was wird ausgegeben? // Typkonversionen. Punkt3D p3da = p2d0; Punkt3D p3db = p2d1; Punkt3D p3dc = p3db; Punkt2D p2d3 = p3db; } }// Ende Klasse Punkt3D
- Was schreibt dieses Programm mit den beiden Aufrufen von System.out.println() auf die Konsole? (2 Minuten)
- Warum werden hier zwei unterschiedliche Methoden aufgerufen, obwohl der Variablentyp bei beiden Variablen Punkt2D ist? Nennen Sie den Fachbegriff und erklären Sie ihn kurz. (4 Minuten)
- Analysieren Sie die Zuweisungen nach dem Kommentar „Typkonversionen“ in der Methode main()
- Fügen Sie Typkonversionen an den Stellen ein, an der die Zuweisungen nicht
sicher sind und vom Übersetzer javac als Syntaxfehler beanstandet werden. (2 Minuten) - Obwohl alle Zuweisungen mit den entsprechenden Typkonversionen syntaktisch richtig sind wird es zur Ausführungszeit Fehler geben. Kommentieren Sie diese Zeilen mit „//“ aus. (1 Minute)
- Eine der Zuweisungen hat eine sichere Typkonversion die ohne explizite Typkonversion (cast) erlaubt ist. Markieren Sie diese Zeile mit „sichere Typkonversion“ (1 Minute)
- Fügen Sie Typkonversionen an den Stellen ein, an der die Zuweisungen nicht
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
Niveau | 1 |
Schwierigkeitsgrad | mittel |
Zeit | 2+4+4 Minuten |
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
Antwort zu Frage 1 : Implementieren einer abgeleiteten Klasse
1. Was schreibt dieses Programm mit den beiden Aufrufen von System.out.println() auf die Konsole?
- x:11.1 y: 22.2
- x:11.1 y: 22.2 z:33.3
2. Warum werden hier zwei unterschiedliche Methoden aufgerufen, obwohl der Variablentyp bei beiden Variablen Punkt2D ist? Nennen Sie den Fachbegriff und erklären Sie ihn kurz:
- Die Methode drucken der Klasse Punkt3D überschreibt die Methode der Oberklasse. Durch den Polymorphismus in Java wird die Methode automatisch die speziellste für das gegebene Objekt ausgewählt.
3. Quellcode mit eingefügten Antworten:
public class Punkt2D { private double x; private double y; public Punkt2D(double xx, double yy) { x = xx; y = yy; } /** * Diese Methode erzeugt eine Zeichenkette der x * und y Koordinate * @return Zeichenketten mit Belegung */ public String drucken() { String s = "x:"+ x + " y: " +y; return s; } }// Ende der Klase Punkt2D public class Punkt3D extends Punkt2D{ private double z; public Punkt3D(double xx, double yy, double zz) { super(xx,yy); z = zz; } /** * Diese Methode erzeugt eine Zeichenkette der x,y und Z * Koordinate * @return Zeichenketten mit Belegung */ public String drucken() { String s = super.drucken() + "z:" +z; return s; } public static void main(String[] args) { Punkt2D[] feld= new Punkt2D[2]; feld[0] = new Punkt2D(11.1,22.2); feld[1] = new Punkt3D(11.1,22.2,33.3); Punkt2D p2d0 = feld[0]; Punkt2D p2d1 = feld[1]; // Analyse der Druckenmethode System.out.println(p2d0.drucken()); // Was wird ausgegeben? System.out.println(p2d1.drucken()); // Was wird ausgegeben? // Typkonversionen. //In der nächsten Zeile wurde ein Kommentar eingefügt //Punkt3D p3da = (Punkt3D) p2d0; Punkt3D p3db = (Punkt3D) p2d1; Punkt3D p3dc = p3db; // Sichere Zuweisung Punkt2D p2d3 = p3db; // Upcast -> Sichere Zuweisung } }// Ende Klasse Punkt3D
- 4776 views
Lösungssatz Aufgabe 2
Hallo!
Der Lösungssatz für Aufgabe 2 hat einen Merkwürdigen Satzbau, was meinen sie mit diesem Satz?
Dank für ihre Antwort
- Log in to post comments