我正在为课程进行抽象超类练习,并且我卡住了,不知道为什么我的getter方法返回null。根据我的教师演示,子类中的setter方法被重写,而getter方法应该是在超类中定义的final方法。当我将getter方法移到子类中时,它们能够工作,因此我猜想这可能与它们位于不同类中有关,但由于我是面向对象编程的新手,我不知道是否正确以及如何纠正错误。
抽象超类:
抽象超类:
public abstract class ProgrammingCourse {
private double credits;
private String courseName;
public final double getCredits() {
return credits;
}
public abstract void setCredits(double credits);
public final String getCourseName() {
return courseName;
}
public abstract void setCourseName(String courseName);
样例子类:
public class AdvancedJavaCourse extends ProgrammingCourse {
private double credits;
private String courseName;
@Override
public void setCourseName(String courseName) {
if (courseName == null || courseName.length() == 0) {
JOptionPane.showMessageDialog(null,
"Error: courseName cannot be null or empty");
System.exit(0);
}
this.courseName = courseName;
}
@Override
public void setCredits(double credits) {
this.credits = credits;
}
我如何尝试在我的主程序中处理这个问题:
ProgrammingCourse[] courses = {new AdvancedJavaCourse(),
new IntroJavaCourse(), new IntroToProgrammingCourse()};
courses[0].setCourseName("adv Java");
courses[1].setCourseName("Intro Java");
courses[2].setCourseName("Intro Programming");
for (ProgrammingCourse pc : courses) {
System.out.println(pc.getCourseName());
}
AdvancedJavaCourse advJava = new AdvancedJavaCourse();
advJava.setCourseName("Advanced Java");
System.out.println(advJava.getCourseName());