2016-04-04 73 views
-7

我有一個關於如何讓一個方法調用Java中兩個不同類對象的問題?例如,如果SListNode和DListNode都需要使用相同的方法大小()來測量列表的長度。我只想定義size方法一次,而不是在SListNode和DListNode類中都顯式地寫出兩次。如何在java中應用多態性?

我想繼承是必要的。例如,定義一個包含size()方法的超類Size。 SListNode和DListNode都是Size的子類。但是,以這種方式在size()方法的定義中需要一個特定類型的列表。因此,該方法不能同時應用於SListNode和DListNode。

我想知道繼承結構應該是什麼樣子,或者是否有任何標準方法來解決這類問題?我想這是爲什麼java有多態性的原因。但我很難找出...

+1

在請看:[Java的多態性](https://docs.oracle.com/javase/tutorial/java/IandI/polymorphism.html) –

+2

'Java.polymorphism(apply);' – Gendarme

+1

可能重複[多態vs覆蓋vs重載](http://stackoverflow.com/questions/154577/polymorphism-vs-overriding-vs-overloading) – wiredniko

回答

0

你應該有不同的想法。 例如: 創建一個抽象類ListNode,並在其中放置非特定代碼(不要實現列表本身。 實現listNode的size方法。例如size方法只能讀取一個屬性(protected int size)

創建SListNode和DListNode類,擴展ListNode,並實施具體的代碼。 確保在您的實現更新大小屬性。

2

你想要做的是把方法大小()作爲一個方法一個父類,比如一個叫Node的類。

然後讓SListNode和DListNode擴展節點。方法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 


} 

希望這有助於:)