gpt4 book ai didi

java - Java 中使用子构造函数初始化父类,理论上

转载 作者:行者123 更新时间:2023-12-01 23:48:57 30 4
gpt4 key购买 nike

我刚刚测试了这段代码。

主要。

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;
}

}

child 。

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 类实例,但仅在 Child 中声明了 extra 字段?

如果我编写 Parent Parent = new Parent(12, "Lorem"); 并调用 outChild(Parent Parent),我会得到一个 ClassCastException.

最佳答案

您的父级是一个引用,而不是一个对象。这意味着您至少可以引用父类,但也可以是子类。

关于java - Java 中使用子构造函数初始化父类,理论上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16558908/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com