要点: Java新手,尝试浏览其他帖子,但没有找到答案。我正在学习继承并且有一个由Runner类扩展的AddressBook类。当我编写一个程序来测试继承时,我创建了一个Runner对象。如果我得到第一个String参数,它返回正常,但是当我尝试获取第二个String参数时,它返回null。
问题: 为什么第二个参数返回null?
$("body").pagecontainer("change", "#home", { transition: "none" });
答案 0 :(得分:4)
因为lastName
为空。
您正在呼叫AddressBook(String firstName, String middleName)
并设置middleName
,而不是lastName
。
答案 1 :(得分:2)
BanffMarathonRunner r1 = new BanffMarathonRunner("Elena", "Brandon", 341, 1);
调用:
// firstName = "Elena"
// lastName = "Brandon"
// min = 341
// yr = 1
public BanffMarathonRunner(String firstName, String lastName, int min, int yr) {
super(firstName, lastName);
// ...
}
通过super(...)
调用:
// firstName = "Elena"
// middleName = "Brandon" <-- here is your issue
public AddressBook(String firstName, String middleName) {
this.firstName = firstName;
this.middleName = middleName;
}
Brandon
设置在AddressBook#middleName
而不是AddressBook#lastName
。
答案 2 :(得分:0)
您的问题出在BanffMarathonRunner.java:
在调用时,在构造函数中
super(firstName, lastName);
实际上通过上面的调用,调用了带有两个参数的超类构造函数,并且该构造函数是设置middleName而不是lastName的构造函数。
我认为你因为lastName
变量名而感到困惑,它使用两个参数传递给构造函数,而构造函数使用第二个参数来设置middleName。
祝你好运。