Polimorfizm w Javie: jak przeciążać lub zastępować metody

Polimorfizm w Javie: jak przeciążać lub zastępować metody

Przeciążanie i zastępowanie metod to dwa sposoby demonstrowania polimorfizmu w Javie. 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:

class Arithmetic{
int cube(int x){
return x*x*x;
}
double cube(double x){
return x*x*x;
}
float cube(float x){
return x*x*x;
}
public static void main(String[] args){
Arithmetic myMultiplication = new Arithmetic();
System.out.println('The cube of 5 is ' + myMultiplication.cube(5));
System.out.println('The cube of 5.0 is ' + myMultiplication.cube(5.0));
System.out.println('The cube of 0.5 is ' + myMultiplication.cube(0.5));
}
}

Wyjście:





The cube of 5 is 125
The cube of 5.0 is 125.0
The cube of 0.5 is 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.

class Account{
public void message() {
System.out.println('
Thank you for opening an account with us!');
}
public static void main(String args[]) {
Account myAccount = new Account();
Savings mySavings = new Savings();
FixedDeposit myFixedDepo = new FixedDeposit();
myAccount.message();
mySavings.message();
myFixedDepo.message();
}
}
class Savings extends Account {
public void message() {
System.out.println('
Thank you for opening a Savings account with us!');
}
}
class FixedDeposit extends Account {
public void message() {
System.out.println('
Thank you for opening a Fixed Deposit account with us!');
}
}

Wyjście:

Thank you for opening an account with us!
Thank you for opening a Savings account with us!
Thank you for opening a Fixed Deposit account with us!

Powyższy przykład pokazuje, jak metoda wiadomość() jest zastępowany w podklasach Oszczędności oraz 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ł .

final void message (){
System.out.println('
Thank you for opening an account with us!');
}

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 Super po którym następuje operator kropki ( . ) i nazwę metody w takim przypadku.

Rozważ superklasę Zwierzę .

class Animal{
public void move() {
System.out.println('
I can move.');
}
}

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

class Fish extends Animal {
public void move() {
System.out.println('
I can swim.');
super.move();
}
public static void main(String args[]){
Fish Tilapia = new Fish();
Tilapia.move();
}
}

Wyjście:

jak znaleźć wszystkie konta e-mail na moje nazwisko
I can swim.
I can move.

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ą.

Czemu? 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.

Udział Udział Ćwierkać 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(22 opublikowane artykuły)

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!

Kliknij tutaj, aby zasubskrybować