Je suis encore un peu confus en ce qui concerne la différence entre statique et dynamique. D'après ce que je sais, la dynamique utilise un objet alors que le type d'utilisation statique et que la dynamique est résolue pendant l'exécution alors que l'état statique est pendant la compilation. Donc, cela ne devrait pas this.lastName.compareTo (s1.lastName) utiliser la liaison dynamique à la place?Pourquoi est-ce une liaison statique au lieu de la liaison dynamique?
key.compareTo (liste [position 1]) l'utilisation dynamique liaison
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;
}
}
Pourquoi (this.lastName.compareTo (s1.lastName)) utilisent une liaison statique?
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??
}
}
Je devine que '' lastName' est un CHAINE'?Si c'est le cas, puisque 'String' est final, il ne peut pas être étendu, donc aucune de ses méthodes ne peut être surchargée. Par conséquent, l'implémentation est connue au moment de la compilation. – azurefrog
oui le nom de famille est une chaîne! Bonne prise, je n'ai même pas remarqué ça! – Challenger
mais pourquoi key.compareTo (list [position-1]) utilise la liaison dyamique? – Challenger