Java- Getters返回Null
作者:互联网
我正在为类进行一个抽象的超类练习,我仍然坚持为什么我的getter返回null.根据我的教师演示的方式,在子类中重写了setter,并且getter将成为超类中的最终方法.当我将它们移动到子类时,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());
解决方法:
您的代码存在一些问题.从AdvancedJavaCourse开始,您应该删除字段credit和courseName.这些可以从ProgrammingCourse访问.
现在您只为每个字段都有一个声明,您应该在ProgrammingCourse中将字段标记为受保护或创建一些getter / setter,以便您可以从AdvancedJavaCourse更改它们的值.
标签:java,abstract-class,getter-setter 来源: https://codeday.me/bug/20190824/1706270.html