2015-12-29 75 views
-1

下面是我講座中的示例代碼,它使用另一個類ListNode定義了一個名爲BasicLinkedList類的泛型類。爲什麼實現接口的泛型類不需要構造函數?

我明白接口不需要構造函數,但爲什麼BasicLinkedList作爲實現接口的類不需要構造函數呢?

下面是ListNode類代碼:

class ListNode<E> { 
    protected E element; 
    protected ListNode<E> next; 

    public ListNode(E item) {element = item; next = null;} 
    public ListNode(E item, ListNode <E> n) {element = item; next = n;} 

    public ListNode<E> getNext() {return this.next;} 

    public E getElement() {return this.element;} 
} 

代碼爲LinkedListInterface:

import java.util.*; 

public interface LinkedListInterface<E> { 
    public boolean isEmpty(); 
    public int size(); 
    public E getFirst() throws NoSuchElementException; 
    public boolean contains(E item); 
    public void addFirst(E item); 
    public E removeFirst() throws NoSuchElementException; 
    public void print() throws NoSuchElementException; 
} 

最後的BasicLinkedList代碼:

import java.util.*; 
class BasicLinkedList<E> implements LinkedListInterface<E> { 
    protected ListNode <E> head = null; 
    protected int num_nodes = 0; 

    public boolean isEmpty() {return (num_nodes == 0); } 
...//other methods 
+3

沒有類_have_有一個構造函數wri在代碼中。如果沒有找到,編譯器會添加一個默認的。有什麼具體的事情讓你覺得他們是必需的嗎? – csmckelvey

+0

'BasicLinkedList'有一個默認的構造函數 – Ramanlfc

回答

3

您沒有提供任何constructors爲您的班級,但你這樣做時一定要小心。編譯器自動爲任何沒有構造函數的類提供一個無參數的默認構造函數。

+0

謝謝!!!!!!!!!! –

1

這有什麼用仿製藥,當你不定義構造函數,Java將提供一個爲你提供以下簽名,

public YourClass(){ 
} 

一旦你定義自己的構造函數,即默認構造函數走開。

0

如果沒有定義構造函數,JAVA隱式地提供不帶參數

public ClassName(){ 
} 
0
public class YourClass { 


} 

默認的構造函數假設這是你創建的類的編譯器創建(在運行時) 一個默認的構造函數,所以基本上它不是必須在您的代碼中定義它

希望它有幫助:D

相關問題