Junior
Kāda ir atšķirība starp mantošanu un polimorfismu?
sobes.tech AI
Atbilde no AI
Mantošana ir mehānisms, kas ļauj klasei (atvasinātājs, apakšklaše) mantoēt citas klases (vecāks, superklase) laukus un metodes. Tas veicina koda atkārtotu izmantošanu.
Polimorfisms ir iespēja izmantot vienu un to pašu interfeisu, lai attēlotu dažādas pamatformas. Java kontekstā tas nozīmē, ka atsauces tipa mainīgais var norādīt uz objekta sava paša tipa vai jebkura no tā apakštipiem. Atšķir divi polimorfisma veidi: kompilācijas laika polimorfisms (metožu pārslodze) un izpildes laika polimorfisms (metožu pārrakstīšana).
Galvenā atšķirība:
- Mantošana nosaka attiecības starp klasēm (vecāks-mazulis) un ļauj atkārtoti izmantot kodu.
- Polimorfisms ļauj piekļūt dažādiem objektiem caur kopēju interfeisu, izpildot atbilstošo metodi atkarībā no faktiskā objekta tipa izpildes laikā.
Polimorfisma piemērs izpildes laikā:
class Animal {
public void sound() {
System.out.println("Dzīvnieks izdala skaņu");
}
}
class Dog extends Animal {
@Override
public void sound() {
System.out.println("Gau-gau");
}
}
class Cat extends Animal {
@Override
public void sound() {
System.out.println("Mau-mau");
}
}
public class Main {
public static void main(String[] args) {
Animal myDog = new Dog(); // Polimorfisms: atsauce uz Animal tipu norāda uz Dog objektu
Animal myCat = new Cat(); // Polimorfisms: atsauce uz Animal tipu norāda uz Cat objektu
myDog.sound(); // Izsauc metodi sound() no klases Dog
myCat.sound(); // Izsauc metodi sound() no klases Cat
}
}