2017-03-11 1 views
0

저는 Java를 처음 사용하고 공부하고 있습니다. 그래서 저는 이것들이 무엇인지 이해하고 자바에 의해 어떻게 처리되는지에 대해서도 문제가 있습니다. 왜 우리는 이러한 변수들을 선언할까요? 이걸 내게 교육시켜 줄 수 있니?그 클래스 안에서 변수 멤버로 클래스를 사용하는 이유

Public abstract class ListItem { 
    protected Listitem leftLink = null; 
    protected Listitem rightLink = null; 
    protected Object value; 

    some code here 
} 

미리 감사드립니다.

+0

여기서 볼 수있는 것은 클래스 멤버 중 하나 인 필드입니다. 어쨌든 당신을 혼란스럽게하는 것에 대해 좀 더 구체적으로 설명해야합니다. Java 튜토리얼/책에서 읽지 않은 내용은 무엇입니까? https://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html을 보셨습니까? – Pshemo

+0

질문이 모호하면 미안합니다. 예, 저는 OOP를하고 잘 이해했습니다. 내 질문을 명확하게하기 위해 왜 ClassName이 int, string 등이 아닌 변수 유형으로 선언 된 클래스 필드를 선언하는지 혼란 스럽습니다. –

+1

int, string 등이 아닌 해당 유형의 데이터를 저장하려고하기 때문에 혼란 스럽습니다. – azurefrog

답변

0

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; 
    } 
} 

이전 마지막 노드 참조를 때문에, 새로운 마지막 노드가된다.

+0

나에게 물건을 정교하게 쓰는 것에 노력 해줘서 고맙습니다. 비록 내가 이것을 완전히 이해하지는 못했지만, 이것은 자바 나 OOP를 통해 더 많은 것을 이해하는 나의 발판이 될 것입니다. –

+0

사실, 참조로 자체 내부에서 클래스를 사용할 수 없게하는 제약은 없습니다. 또 다른 예는'Person' 클래스입니다. 어머니와 아버지가 있다고 합리적으로 추측합시다. 그 두 부모는'사람이야! ' :) 따라서 클래스'Person'은'Person' 타입의 변수 멤버를 선언하여 자신의 어머니를 참조 할 수 있습니다. 이 답변이 적절하다고 판단되면 질문에 답변을 표시해주십시오. – ZenLulz

+0

고맙습니다, 당신은 저를 많이 도와 주셨습니다. –