gpt4 book ai didi

java - 多态行为未实现

转载 作者:行者123 更新时间:2023-12-01 23:28:37 24 4
gpt4 key购买 nike

此代码的最后两行说明了问题:当我使用对象的引用时,编译器会工作,但当我将引用分配给数组元素时,编译器不会工作。其余代码位于同一包中的单独文件中。 BioStudent 和 ChemStudent 是独立的类,也是 Student。

package pkgPoly;

public class Poly {
public static void main(String[] arg) {

Student[] stud = new Student[3];

// create a biology student
BioStudent s1 = new BioStudent("Tom");

// create a chemistry student
ChemStudent s2 = new ChemStudent("Dick");

// fill the student body with studs
stud[0] = s1;
stud[1] = s2;


// compiler complains that it can't find symbol getMajor on next line
System.out.println("major: " + stud[0].getMajor() ); // doesn't compile;

System.out.println("major: " + s0.getMajor() ); // works: compiles and runs correctly
}
}

最佳答案

有很多缺失的信息,例如 s0 是​​什么,或者 BioStudent 和 ChemStudent 是否扩展了 Student,但是我只是假设所有这些都是正确的,并且 s0 是​​ BioStudent 或 ChemStudent .

如果是这样,我不完全确定正确的术语,但是当您使用父类型的引用变量并将其指向子对象时,您只能访问子方法(如果它们覆盖父方法)。

换句话说,您需要在父类 Student 中定义 getMajor() 方法,然后在子类 BioStudent 和/或 ChemStudent 中重写。

关于java - 多态行为未实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19645637/

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