【问题标题】:How to apply polymorphism in java?如何在java中应用多态性?
【发布时间】:2016-07-24 15:20:05
【问题描述】:

我有一个问题,关于如何让一个方法调用在 Java 中的两个不同类的对象上工作?例如,如果 SListNode 和 DListNode 两个类都想使用相同的方法 size() 来测量列表的长度。我只想定义一次 size 方法,而不是在 SListNode 和 DListNode 类中明确写出两次。

我想继承是必要的。例如,定义一个超类 Size,其中包含 size() 方法。 SListNode 和 DListNode 都是 Size 的子类。但是,以这种方式在 size() 方法的定义中需要特定类型的列表。因此,该方法不能同时应用于 SListNode 和 DListNode。

我想知道继承结构应该是什么样子,或者是否有任何标准方法可以解决此类问题?我想有,这就是为什么 java 具有多态性。但我很难找到...

【问题讨论】:

标签: java inheritance polymorphism


【解决方案1】:

你要做的就是把方法size()作为一个父类的方法,比如一个叫Node的类。

然后让 SListNode 和 DListNode 扩展 Node。方法size()会被继承,所以只需要在Node类中实现即可。

结构如下:

父类:

public class Node {

  //Parent class

  //size() method will be inherited by children
  public void size(){
    //Put implementation of size() here
  }
}

孩子们:

public class DListNode extends Node {

  //size() method is inherited

  // put the rest of your body here

}


public class SListNode extends Node {

  //size() method is inherited

  // put the rest of your body here


}

希望这会有所帮助:)

【讨论】:

    【解决方案2】:

    你应该有不同的想法。 举个例子 : 创建一个抽象类 ListNode 并将非特定代码放入其中(不要实现列表本身。 实现 listNode 的 size 方法。例如 size 方法可以只读取一个属性(受保护的 int 大小)

    创建SListNode和DListNode类,扩展ListNode,实现具体代码。 请务必在您的实现中更新 size 属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-20
      • 1970-01-01
      • 1970-01-01
      • 2011-02-16
      • 2012-06-14
      • 2020-03-17
      • 2021-11-23
      • 2017-10-11
      相关资源
      最近更新 更多