Przeciążanie i zastępowanie metod to dwa sposoby demonstrowania przez Javę polimorfizmu. Polimorfizm pochodzi z połączenia dwóch greckich słów: „poly” oznaczającego wiele i „morph” oznaczającego formę. Dlatego polimorfizm umożliwia metodom przybieranie wielu form.

Postępuj zgodnie z tym przewodnikiem, aby dowiedzieć się, jak przeciążać lub zastępować metody w Javie.

Co to jest przeciążenie metody?

„Przeciążanie metod” odnosi się do definiowania różnych metod w klasie o tej samej nazwie. Metody muszą mieć różne sygnatury. Sygnatura metody jest kombinacją nazwy metody i listy parametrów. Nie obejmuje typu zwracanego.

Kompilator wie, której metody użyć, sprawdzając typ, liczbę parametrów i kolejność ich umieszczania.

Związane z: Badanie dziedziczenia w języku programowania Java

Przeciążanie metod demonstruje polimorfizm w czasie kompilacji. Polimorfizm w czasie kompilacji oznacza, że ​​kompilator Java wiąże obiekt z jego funkcjonalnością w czasie wykonywania. Kompilator sprawdza sygnatury metod, aby to osiągnąć.

Ten rodzaj polimorfizmu jest również znany jako wiązanie statyczne lub wczesne.

Zobacz poniższy przykład przeciążania metody:

klasa Arytmetyka{
int kostka (int x){
zwróć x*x*x;
}
podwójny sześcian (podwójny x){
zwróć x*x*x;
}
pływak sześcian (pływak x){
zwróć x*x*x;
}
public static void main (String[] args){
Arytmetyka mojeMnożenie = new Arytmetyka();
System.out.println("Kostka 5 to " + myMultiplication.cube (5));
System.out.println("Kostka 5.0 to " + myMultiplication.cube (5.0));
System.out.println("Kostka 0.5 to " + myMultiplication.cube (0.5));
}
}

Wynik:

Kostka 5 to 125
Kostka 5,0 to 125,0
Sześcian 0,5 to 0,125

Powyższy kod pokazuje, w jaki sposób można uzyskać kostkę różnych typów (int, podwójnie, pływak) przy użyciu tej samej metody.

Ogólnie rzecz biorąc, przeciążanie metod służy do definiowania podobnych metod z różnymi typami parametrów.

Co to jest zastępowanie metody?

Odnosi się to do innej implementacji metody w podklasie. Metoda musi być już zdefiniowana w klasie nadrzędnej.

Nadrzędna metoda (tj. ta w podklasie) musi mieć taką samą sygnaturę metody jak ta w nadklasie. Zwracany typ metody nadpisującej może być taki sam lub być podtypem tego w nadklasie.

Zastępowanie jest zwykle używane do włączenia określonej implementacji zachowania obiektu w podklasie.

Konto klasy{
publiczna nieważna wiadomość () {
System.out.println("
Dziękujemy za otwarcie u nas konta!");
}
public static void main (argumenty ciągu []) {
Konto mojeKonto = nowe Konto();
Oszczędności mojeOszczędności = nowe Oszczędności();
FixedDeposit myFixedDepo = new FixedDeposit();
mojeKonto.wiadomość();
mojeOszczędności.wiadomość();
myFixedDepo.wiadomość();
}
}
klasa Oszczędności rozszerza Konto {
publiczna nieważna wiadomość () {
System.out.println("
Dziękujemy za otwarcie u nas Konta Oszczędnościowego!");
}
}
class FixedDeposit rozszerza Konto {
publiczna nieważna wiadomość () {
System.out.println("
Dziękujemy za otwarcie u nas rachunku wpłaty stałej!");
}
}

Wynik:

Dziękujemy za otwarcie u nas konta!
Dziękujemy za otwarcie u nas Konta Oszczędnościowego!
Dziękujemy za otwarcie u nas rachunku depozytowego!

Powyższy przykład pokazuje, jak metoda wiadomość() jest zastępowany w podklasach Oszczędności i Stały depozyt. Dla posiadaczy kont bankowych z kontem Oszczędnościowym oraz dla posiadaczy rachunku z lokatą stałą będą wyświetlane różne komunikaty.

Związane z: Co musisz wiedzieć o używaniu ciągów w Javie

Warto również zauważyć, że przesłanianie metod demonstruje polimorfizm środowiska uruchomieniowego lub dynamiczne wysyłanie metod. Oznacza to, że metoda, która ma zostać wywołana, jest rozwiązywana w czasie wykonywania, a nie podczas kompilacji.

Aby uniknąć nadpisania metody, użyj słowa kluczowego finał.

ostateczna nieważna wiadomość (){
System.out.println("
Dziękujemy za otwarcie u nas konta!");
}

Gdy podklasa próbuje ją zastąpić, wystąpi błąd kompilacji.

W idealnym przypadku wszystkie metody wywoływane w konstruktorze powinny być: finał. Ma to na celu uniknięcie wszelkich niezamierzonych zmian, które mogą być spowodowane przez podklasy.

Czasami może być potrzebny dostęp do zastąpionej metody w ramach metody zastępującej. Możesz użyć słowa kluczowego Wspaniały po którym następuje operator kropki (.) i nazwę metody w takim przypadku.

Rozważ superklasę Zwierzę.

klasa zwierzę {
publiczne pustki ruch () {
System.out.println("
Mogę się ruszać.");
}
}

Poniżej znajduje się podklasa o nazwie Ryba, który zastępuje ruszaj się():

class Ryba rozszerza Zwierzę {
publiczne pustki ruch () {
System.out.println("
Potrafię pływać.");
super.przenieś();
}
public static void main (argumenty ciągu []){
Ryba Tilapia = nowa Ryba();
Tilapia.przenieś();
}
}

Wynik:

Potrafię pływać.
Mogę się ruszać.

Podczas zastępowania metody należy również pamiętać o użytym modyfikatorze dostępu. Modyfikator w podklasie powinien mieć ten sam lub wyższy poziom widoczności niż w klasie bazowej. Na przykład, jeśli metoda w klasie bazowej jest zdefiniowana jako chroniony, wtedy nadrzędną metodą może być chroniony lub publiczny.

Prosty kod z polimorfizmem

Nadpisywanie i przeciążanie metod jest ważne dla uproszczenia kodu, a prosty kod jest dobrą praktyką.

Dlaczego? Wyobraź sobie złożoną bazę kodów z większą liczbą tajników niż Grand Central Station. Teraz wyobraź sobie, że niszczycielski błąd zaczyna niszczyć twoją ciężką pracę na twoich oczach. Musisz odizolować źródło infekcji i musisz to zrobić szybko.

Powodzenia, nie uprościłeś kodu... Teraz czeka cię prawdziwa lekcja kryptografii. Stosowanie efektywnych struktur danych i robienie wszystkiego, co możliwe, aby skrócić kod (np. pamiętanie o DRY) jest najlepszą obroną przed taką sytuacją.

Następna na liście do nauki języka Java powinna być praca z tablicami. Są to ważne struktury danych używane do przechowywania partii punktów danych.

E-mail
Jak tworzyć i wykonywać operacje na tablicach w Javie

Uczysz się Javy? Pozwól, aby tablice z łatwością obsłużyły Twoje dane.

Czytaj dalej

Powiązane tematy
  • Programowanie
  • Jawa
  • Poradniki kodowania
O autorze
Jerome Davidson (15 opublikowanych artykułów)

Jerome jest pisarzem sztabowym w MakeUseOf. Zajmuje się artykułami na temat programowania i systemu Linux. Jest także entuzjastą kryptowalut i zawsze śledzi branżę kryptograficzną.

Więcej od Jerome'a ​​Davidsona

Zapisz się do naszego newslettera

Dołącz do naszego newslettera, aby otrzymywać porady techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!

Jeszcze jeden krok…!

Potwierdź swój adres e-mail w e-mailu, który właśnie wysłaliśmy.

.