Zachowanie ostatecznej metody statycznej
Bawiłem się modyfikatorami metodą statyczną i natknąłem się na dziwne zachowanie.
Jak wiemy, metod statycznych nie można przesłonić, ponieważ są one powiązane z klasą, a nie z instancją.
Więc jeśli mam poniżej fragment kodu, kompiluje się dobrze
//Snippet 1 - Compiles fine
public class A {
static void ts() {
}
}
class B extends A {
static void ts() {
}
}
Ale jeśli dołączę modyfikator końcowy do metody statycznej w klasie A, kompilacja nie powiedzie sięts () w B nie może przesłonić ts () w A; nadpisana metoda to statyczny finał.
Dlaczego tak się dzieje, gdy w ogóle nie można zastąpić metody statycznej?