Претоварването и заместването на метода са двата начина, по които Java демонстрира полиморфизъм. Полиморфизмът идва от комбинация от две гръцки думи: „поли“, което означава много и „морфа“, което означава форма. Следователно, полиморфизмът дава възможност на методите да приемат много форми.
Следвайте това ръководство, за да научите как да претоварите или замените методите в Java.
Какво е претоварване на метода?
"Претоварване на метод" се отнася до дефиниране на различни методи в клас със същото име. Методите трябва да имат различни подписи. Подписът на метода е комбинацията от име на метод и списък с параметри. Не включва типа връщане.
Компилаторът знае кой метод да използва, като проверява вида, броя на параметрите и реда, в който са поставени.
Свързани: Проучване на наследството в езика за програмиране Java
Претоварването на метода показва полиморфизъм по време на компилация. Полиморфизмът по време на компилация означава, че Java компилаторът обвързва обект с неговата функционалност по време на изпълнение. Компилаторът проверява подписите на методите, за да постигне това.
Този тип полиморфизъм е известен още като статично или ранно свързване.
Вижте примера за претоварване на метода по-долу:
клас Аритметика {
int cube (int x) {
връщане x * x * x;
}
двоен куб (двоен х) {
връщане x * x * x;
}
плаващ куб (float x) {
връщане x * x * x;
}
публична статична void main (String [] args) {
Arithmetic myMultiplication = new Arithmetic ();
System.out.println ("Кубът на 5 е" + myMultiplication.cube (5));
System.out.println ("Кубът на 5.0 е" + myMultiplication.cube (5.0));
System.out.println ("Кубът на 0.5 е" + myMultiplication.cube (0.5));
}
}
Изход:
Кубът на 5 е 125
Кубът на 5.0 е 125,0
Кубът от 0,5 е 0,125
Кодът по-горе показва как можете да получите куб от различни видове (инт, двойно, плувка) използвайки същия метод.
По принцип претоварването на метода се използва за дефиниране на подобни методи с различни типове параметри.
Какво е замяна на метода?
Това се отнася до различно изпълнение на метод в подклас. Методът трябва вече да е бил дефиниран в родителския клас.
Методът за заместване (т.е. този в подкласа) трябва да има същия подпис на метода като този в суперкласа. Типът на връщане на заместващия метод може да бъде същият или подтип на този в суперкласа.
Обикновено заместването се използва за включване на специфично изпълнение на поведението на даден обект в подкласа.
class Account {
публично невалидно съобщение () {
System.out.println ("
Благодарим Ви, че открихте акаунт при нас! ");
}
публична статична void main (String args []) {
Акаунт myAccount = нов акаунт ();
Спестявания mySavings = нови спестявания ();
FixedDeposit myFixedDepo = нов FixedDeposit ();
myAccount.message ();
mySavings.message ();
myFixedDepo.message ();
}
}
class Savings удължава сметка {
публично невалидно съобщение () {
System.out.println ("
Благодарим ви, че отворихте спестовна сметка при нас! ");
}
}
клас FixedDeposit разширява Account {
публично невалидно съобщение () {
System.out.println ("
Благодарим Ви, че открихте сметка с фиксиран депозит при нас! ");
}
}
Изход:
Благодарим Ви, че открихте акаунт при нас!
Благодарим ви, че отворихте спестовна сметка при нас!
Благодарим Ви, че открихте сметка с фиксиран депозит при нас!
Горният пример показва как методът съобщение () е заменено в подкласовете Спестявания и Фиксиран депозит. Ще се показват различни съобщения за притежателите на банкови сметки със спестовна сметка и тези с сметка с фиксиран депозит.
Свързани: Какво трябва да знаете за използването на низове в Java
Също така си струва да се отбележи, че заместването на метода показва полиморфизъм по време на изпълнение или динамично изпращане на метод. Това означава, че методът, който трябва да бъде извикан, се разрешава по време на изпълнение, а не при компилация.
За да избегнете заместване на метод, използвайте ключовата дума финал.
окончателно съобщение за невалидно () {
System.out.println ("
Благодарим Ви, че открихте акаунт при нас! ");
}
Когато подклас се опита да го отмени, ще възникне грешка при компилацията.
В идеалния случай всички методи, извикани в конструктора, трябва да бъдат финал. Това се прави, за да се избегнат всякакви неволни промени, които могат да бъдат причинени от подкласовете.
Понякога може да се наложи да получите достъп до заменен метод в рамките на заместващия метод. Можете да използвате ключовата дума супер последвано от точковия оператор (.) и името на метода в такъв случай.
Помислете за суперкласа Животно.
клас Animal {
публично отменено движение () {
System.out.println ("
Мога да се движа. ");
}
}
По-долу има подклас, наречен Риба, което отменя ход():
клас Fish разширява Animal {
публично отменено движение () {
System.out.println ("
Аз мога да плувам.");
super.move ();
}
публична статична void main (String args []) {
Риба Тилапия = нова Риба ();
Tilapia.move ();
}
}
Изход:
Аз мога да плувам.
Мога да се движа.
Когато замествате метод, трябва също така да имате предвид използвания модификатор на достъп. Модификаторът в подкласа трябва да има същото ниво на видимост или по-високо, отколкото в базовия клас. Например, ако методът в базовия клас е дефиниран като защитен, тогава методът за отмяна може да бъде защитен или публично.
Прост код с полиморфизъм
Заместването и претоварването на методите са важни за опростяването на кода, а простият код е добра практика.
Защо? Представете си сложна кодова база с повече входове и изходи от тази на Grand Central Station. Сега си представете, че опустошителна грешка започва да унищожава вашата упорита работа пред очите ви. Трябва да изолирате източника на инфекцията и трябва да го направите бързо.
Успех, не сте опростили кода си... Сега ще получите истински урок по криптография. Използването на ефективни структури от данни и това, което можете, за да съкратите кода (като имайте предвид СУХО) е най-добрата ви защита срещу ситуация като тази.
След това в списъка ви за обучение на Java трябва да работите с масиви. Те са важни структури от данни, използвани за съхраняване на партиди от точки с данни.
Изучавате Java? Нека масивите обработват данните ви с лекота.
Прочетете Напред
- Програмиране
- Java
- Уроци за кодиране
Джером е писател на персонала в MakeUseOf. Той обхваща статии за програмиране и Linux. Той също така е крипто ентусиаст и винаги следи крипто индустрията.
Абонирайте се за нашия бюлетин
Присъединете се към нашия бюлетин за технически съвети, рецензии, безплатни електронни книги и ексклузивни оферти!
Още една стъпка…!
Моля, потвърдете имейл адреса си в имейла, който току-що ви изпратихме.