Skip to main content

Co to jest metoda statyczna?

Metoda programowania komputerowego zorientowana na obiekt, która jest zadeklarowana w klasie, ale nie jest zależna od żadnego konkretnego tworzenia instancji tej klasy, nazywana jest metodą statyczną.Większość języków programowania zawiera słowo kluczowe statyczne W deklaracji metody tworzenia metody statycznej.Metody te należą ściśle do klasy, w której są zawarte, a nie do żadnego obiektu utworzonego z tej klasy.Są one często określane jako Metody klasowe .

Nazwa dosłowności klasy jest zwykle używana do dostępu do metody statycznej zamiast odnosić się do niej z nazwą instancji obiektu.Używanie nazw obiektów w Javie jest dopuszczalne w odniesieniu do tych metod, ale jest to silnie zniechęcone.Jeśli używana jest nazwa obiektu, osoba czytająca kod może mylić jedną z tych metod z metodą instancji.

Metody statyczne są często stosowane w klasach użyteczności, które nie zależą od zmiennych instancji z jakiejkolwiek konkretnej klasy.Są one również używane, gdy programista musi uzyskać dostęp do metody, ale nie ma potrzeby tworzenia instancji klasy, w której jest zawarta. Klasy użyteczności zwykle nie są tworzone na obiekty.Byłoby niezwykłe, gdyby metoda użyteczności miała potrzebę modyfikacji informacji o obiekcie.Metoda z klasy java.lang.math, taka jak pow (), byłaby przykładem tego, w jaki sposób ten typ metody byłby stosowany w klasie użyteczności.

Metody instancji mogą bezpośrednio uzyskać dostęp do zmiennych instancji, zmiennych statycznych, metod instancjii metody statyczne.Metody statyczne nie mogą bezpośrednio uzyskać dostępu do zmiennych instancji i metod instancji.Ze względu na charakter metod instancji mające lepszy dostęp do członków klasy niż metody statyczne, metody instancji są rodzajem metod normalnie stosowanych w klasach zwykłych.

Jedna główna wada metod statycznych występuje podczas dziedziczenia, gdy stosuje się polimorfizm.Dopóki macierzysta metoda statyczna nie jest ostateczna, tę samą metodę statyczną dziecięcą można zakodować w klasie dzieci, jakby była zastąpiona.Jest to technicznie nazywane ukrywaniem zamiast nadmiernego zastępowania, ponieważ metodę statyczną nie można zastąpić.

Podczas ukrywania się jest używane, jeśli dostępna jest dostępna metoda statyczna przy użyciu nazwy klasy, zastosowana zostanie metoda nadrzędna.Jeśli dostępna zostanie zastąpiona metoda statyczna dziecka przy użyciu nazwy obiektu, zastosowana zostanie zastąpiona metoda dziecka.Problem występuje, gdy obiekt dziecięcy jest upastany jako rodzic.W takim przypadku wezwanie do metody statycznej Upcast Child będzie używać metody nadrzędnej zamiast oczekiwanej metody dziecka.Z prawdziwym polimorfizmem metodą dziecka byłaby aktywowana po updcast.