# Verständnis und abänderungs Frage



## David2456 (1. Feb 2016)

Hallo,
ich habe folgenden Code vorgegeben:


```
public class l {
public static void main(String[] args) {
Parent p = new Child(3, new Parent());
Out.println("// generated by Out.println(p.age);");
Out.println(p.age);
Out.println("// generated by Out.println(p.getAge());");
Out.println(p.getAge());
[B]print(p); [/B]
}
[B]public static void print(Parent p) { [/B]
Out.println("Parent with x = " + p.age);
}
[B]public static void print(Child c) { [/B]
Out.println("Child with x = " + c.age);
}
}
class Parent {
public static final int DEFAULT_AGE = 0;
public static final String DEFAULT_NAME = "Max Mustermann";
int age;
private String name;
public Parent(int age, String name) {
this.age = age;
this.name = name;
}
public Parent() { this(DEFAULT_AGE, DEFAULT_NAME); }
public String getName() { return this.name; }
public int getAge() { return this.age; }
}
class Child extends Parent {
int age;
private Parent parent;
public Child(int age, Parent parent) {
this.age = age;
this.parent = parent;
}
public int getAge() { return this.age; }
public Parent getParent() { return this.parent; }
}
```
Nun soll ich die fett (das B markiert die fett geschriebenen Zeilen) markierte Zeile print(p); so abändern das die zweite fett markierte Methode aufgerufen wird(Also die Zeilen bei denen ein vor steht). Nun meine Frage wie? Child c bzw. c ist doch gar nicht definiert wie Parent p.(Ich darf nur die eine Zeile verändern)
Danke schonmal


----------



## InfectedBytes (1. Feb 2016)

dein p ist ein Child, daher kannst du auch einfach casten:
print((Child)p);


----------

