以下是我演讲中的示例代码,它使用另一个类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
答案 0 :(得分:3)
您不必为您的班级提供任何constructors
,但在执行此操作时必须小心。编译器会自动为没有构造函数的任何类提供无参数的默认构造函数。
答案 1 :(得分:1)
这与泛型无关,当你没有定义构造函数时,Java会为你提供一个带有以下签名的文件,
public YourClass(){
}
一旦定义了自己的构造函数,那个默认构造函数就会消失。
答案 2 :(得分:0)
当没有定义构造函数时,JAVA隐式提供一个没有参数的默认构造函数
public ClassName(){
}
答案 3 :(得分:0)
public class YourClass {
}
假设这是编译器创建的创建类(在运行时) 一个默认的构造函数,所以基本上在代码中定义它并不是必需的
希望它有所帮助:D