子类和重载方法
Subclasses & overloaded methods
我有一个重载方法,每个方法都采用 Member
的子类
public void addMember(Player p) {
和
public void addMember(Supporter s) {
我有一个 ArrayList<Member>
,我想循环遍历每个 Member
,调用传递子类实例的 addMember()
方法。
类似
for(Member m : members) {
this.addMember(m);
}
但是不能,因为我没有addMember(Member m)
的方法
是否有一种解决方案可以完全保留我的重载方法?
干杯。
在那种情况下,您不需要两种不同的方法,您只需要一种方法 public void addMember(Member m)
。您可以将 subclass
实例分配给 parent
class 但不能相反,因为 subclass
继承了 parent
class 的属性。
删除 public void addMember(Player p)
和 public void addMember(Supporter s)
并定义一个方法public void addMember(Member m)
.
现在 Supporter
和 Player
是 Member
的子class Member
的引用变量可以容纳它们。
N.B.: 小心使用 Member m
因为 Member
没有Supporter
和 Player
的属性,overridden
除外。
希望这对您有所帮助。
我有一个重载方法,每个方法都采用 Member
public void addMember(Player p) {
和
public void addMember(Supporter s) {
我有一个 ArrayList<Member>
,我想循环遍历每个 Member
,调用传递子类实例的 addMember()
方法。
类似
for(Member m : members) {
this.addMember(m);
}
但是不能,因为我没有addMember(Member m)
是否有一种解决方案可以完全保留我的重载方法?
干杯。
在那种情况下,您不需要两种不同的方法,您只需要一种方法 public void addMember(Member m)
。您可以将 subclass
实例分配给 parent
class 但不能相反,因为 subclass
继承了 parent
class 的属性。
删除 public void addMember(Player p)
和 public void addMember(Supporter s)
并定义一个方法public void addMember(Member m)
.
现在 Supporter
和 Player
是 Member
的子class Member
的引用变量可以容纳它们。
N.B.: 小心使用 Member m
因为 Member
没有Supporter
和 Player
的属性,overridden
除外。
希望这对您有所帮助。