如何在java中应用多态?

时间:2016-04-04 21:52:44

标签: java inheritance polymorphism

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

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

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

2 个答案:

答案 0 :(得分:2)

您要做的是将方法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


}

希望这有助于:)

答案 1 :(得分:0)

你应该想到不同。 举个例子 : 创建一个抽象类ListNode并在其中放入非特定代码(不要实现列表本身。 实现listNode的size方法。例如,size方法只能读取一个属性(protected int size)

创建SListNode和DListNode类,扩展ListNode并实现特定代码。 请务必更新实施中的size属性。