0

このコードをテストしました。

主要。

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インスタンスと見なされるのに、フィールドが宣言されているのはなぜですか?ParentextraChild

もし私が書いParent parent = new Parent(12, "Lorem");て電話していたらoutChild(Parent parent)、私はClassCastException.

4

1 に答える 1