【问题标题】:Subclasses & overloaded methods子类和重载方法
【发布时间】:2018-04-24 08:38:08
【问题描述】:

我有一个重载方法,每个方法都采用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) ?

标签: java inheritance methods subclass superclass


【解决方案1】:

在这种情况下,您不需要两种不同的方法,您只需要一种方法public void addMember(Member m)。您可以将subclass 实例分配给parent 类,但不能相反,因为subclass 继承了parent 类的属性。

删除public void addMember(Player p)public void addMember(Supporter s)

并定义一个方法public void addMember(Member m)

现在SupporterPlayerMember 的子类Member 的引用变量可以容纳它们。

注意:谨慎使用Member m,因为Member除了overridden之外,没有SupporterPlayer的属性。

希望这会有所帮助。

【讨论】:

  • 谢谢!我确实知道这一点,但是在我的情况下,我需要区分每个子类并做不同的事情。我检查了instancesof,然后运行另一种方法来处理这种类型的子类。希望能帮助遇到类似问题的其他人
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-03
  • 2010-12-05
  • 1970-01-01
  • 1970-01-01
  • 2012-02-26
  • 2010-12-16
  • 2020-09-25
相关资源
最近更新 更多