int, string ... 대신 변수 유형으로 ClassName을 가진 Class 필드를 선언하는 이유는 무엇입니까?
개발자가해야하기 때문에. 때때로 클래스의 인스턴스는 같은 클래스의 다른 인스턴스를 참조해야합니다. 일반적인 예는 LinkedList입니다.
링크 된 목록을 일련의 노드로 간주합니다. 각 노드는 링크 될 다음 노드를 알고 있습니다.
class Node<T> {
private Node<T> next;
private T value;
Node(T value) {
this.value = value;
}
public T getValue() {
return value;
}
void setNext(Node<T> next) {
this.next = next;
}
}
당신이 볼 수 있듯이, 클래스 Node
가 입력 Node
의 변수 구성원을 포함하는 연결리스트의 다음의 요소를 참조하기 : 여기 노드의 원래 구현 될 것이다. 마지막으로, 연결리스트의 단순한 구현은 다음과 같습니다
새로운 노드가 컬렉션에 추가
class LinkedList<T> {
private Node<T> first;
private Node<T> last;
private int length = 0;
public void add(T value) {
Node<T> node = new Node<T>(value);
if(length != 0) {
last.setNext(node);
last = node;
}
else {
first = node;
last = node;
}
length++;
}
public Node<T> getFirst() {
return first;
}
}
의 이전 마지막 노드 참조를 때문에, 새로운 마지막 노드가된다.
여기서 볼 수있는 것은 클래스 멤버 중 하나 인 필드입니다. 어쨌든 당신을 혼란스럽게하는 것에 대해 좀 더 구체적으로 설명해야합니다. Java 튜토리얼/책에서 읽지 않은 내용은 무엇입니까? https://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html을 보셨습니까? – Pshemo
질문이 모호하면 미안합니다. 예, 저는 OOP를하고 잘 이해했습니다. 내 질문을 명확하게하기 위해 왜 ClassName이 int, string 등이 아닌 변수 유형으로 선언 된 클래스 필드를 선언하는지 혼란 스럽습니다. –
int, string 등이 아닌 해당 유형의 데이터를 저장하려고하기 때문에 혼란 스럽습니다. – azurefrog