선언의 차이점은 스타일 중 하나입니다. 변수 유형을 변경하지 않고 나중에 구현 선택을 변경할 수 있으므로 구체적인 구현보다는 추상을 사용하여 변수를 선언하는 것이 바람직합니다. 예를 들어 LinkedList를 대신 사용하도록 List를 변경할 수 있습니다.
특히 메소드 시그니처에서 추상 유형 (인터페이스 또는 추상 클래스)을 사용할 수있는 경우 클라이언트 코드는 선호하는 구현을 자유롭게 사용할 수 있습니다. 따라서 코드를보다 유연하고 쉽게 유지할 수 있습니다.
이것은 변수 선언에서도 마찬가지입니다. 이것을 고려하십시오 :
public abstract class MyListUsingClass {
private List<String> list;
protected MyListUsingClass(List<String> list) {
this.list = list;
}
...
}
을 변수 list
가 다음 ArrayList
로 선언 된 만 ArrayLists이 생성자으로 인정 될 경우. 이는 좋지 않은 선택입니다. 항상 클라이언트 코드가 사용하려는 구현을 선택하도록하십시오.
마지막 질문 : 인터페이스에는 클래스와 동일한 메소드 제한이 있으므로 예 : overload methods 수 있습니다.
코드 샘플에서 두 개의 다른 변수 이름을 사용했다면 좋은 질문 집합이지만 명확하게 대답하기가 쉽습니다. – Uffe