저는 정적과 동적의 차이에 관해서는 여전히 약간 혼란 스럽습니다. 내가 아는 바로는 동적 사용 객체를 정적 사용 유형과 런타임 동안 동적으로 해결하는 반면 정적은 컴파일 타임에 사용합니다. this.lastName.compareTo (s1.lastName) 대신 동적 바인딩을 사용 하시겠습니까?왜 동적 바인딩 대신 정적 바인딩입니까?
key.compareTo (리스트 [위치-1])
public static void insertionSort (Comparable[] list)
{
for (int index = 1; index < list.length; index++)
{
Comparable key = list[index];
int position = index;
while (position > 0 && key.compareTo(list[position-1]) < 0) // using dynamic binding
{
list[position] = list[position-1];
position--;
}
list[position] = key;
}
}
이유 (this.lastName.compareTo (s1.lastName)) 정적 바인딩을 동적 바인딩을 사용 사용합니까?
private String firstName;
private String lastName;
private int totalSales;
@Override
public int compareTo(Object o) {
SalePerson s1 = (SalePerson)o;
if (this.totalSales > s1.getTotalSales())
{
return 1;
}
else if (this.totalSales < s1.getTotalSales())
{
return -1;
}
else //if they are equal
{
return (this.lastName.compareTo(s1.lastName)); //why is this static binding??
}
}
나는'lastName' 인'String' 같은데요 바인딩 정적을 사용 아는 사람?그렇다면'String'은 final이므로 확장 할 수 없으므로 메서드를 재정의 할 수 없습니다. 따라서 구현은 컴파일 타임에 알려져 있습니다. – azurefrog
예 lastName은 문자열입니다! 좋은 캐치, 나는 심지어 그것을 알아 차리지 못했다! – Challenger
하지만 key.compareTo (list [position-1])가 다이나믹 바인딩을 사용하는 이유는 무엇입니까? – Challenger