このコードをテストしました。
主要。
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
Parent parent = new Child(12, "Lorem", 12);
if (parent instanceof Parent) {
System.out.println("Parent");
} else if (parent instanceof Child) {
System.out.println("Child");
}
outChild(parent);
}
private static void outChild(Parent parent) {
Child child = (Child) parent;
System.out.print(child);
}
}
親。
public class Parent {
int id;
String name;
public Parent(int id, String name) {
this.id = id;
this.name = name;
}
}
子。
public class Child extends Parent {
int extra;
public Child(int id, String name, int extra) {
super(id, name);
this.extra = extra;
}
@Override
public String toString() {
return "id: " + id + ", name: " + name + ", extra: " + extra;
}
}
私はいくつかの理論が必要です。インスタンスがクラスparent
インスタンスと見なされるのに、フィールドが宣言されているのはなぜですか?Parent
extra
Child
もし私が書いParent parent = new Parent(12, "Lorem");
て電話していたらoutChild(Parent parent)
、私はClassCastException
.