Kas ir manto un polimorfisms attiecībā uz atsauces datu tipiem?
sobes.tech AI
Atbilde no AI
Mantošana — tas ir mehānisms, kas ļauj izveidot jaunu klasi (atvasinātu, bērnu), kas manto esošās klases (pamatklases, vecāka) laukus un metodes. Tas veicina koda atkārtotu izmantošanu un klases hierarhiju veidošanu.
Polimorfisms — tas ir iespēja dažādu klases objektiem uzvesties vienādi vai atšķirīgi, izsaucot vienu un to pašu metodi. Pastāv divi galvenie veidi: statiskais (metožu pārslodze) un dinamiskais (metožu pārrakstīšana).
Saistībā ar atsauces tipu, mantošana ļauj izveidot pamatklases mainīgo, kas var norādīt uz atvasinātas klases objektu. Polimorfisms šajā gadījumā izpaužas tajā, ka, izsaucot metodi caur šo mainīgo, tiks izpildīta faktiskā objekta tipa versija, nevis saites tipa (dinamisks polimorfisms).
Java piemērs:
// Pamatklase
class Animal {
public void makeSound() {
System.out.println("Izdod skaņu");
}
}
// Atvasināta klase 1
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Au-au");
}
}
// Atvasināta klase 2
class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("Mau-mau");
}
}
class Main {
public static void main(String[] args) {
Animal myDog = new Dog(); // Mainīgais ar tipu Animal norāda uz Dog objektu
Animal myCat = new Cat(); // Mainīgais ar tipu Animal norāda uz Cat objektu
myDog.makeSound(); // Izsauc Dog metodi (polimorfisms)
myCat.makeSound(); // Izsauc Cat metodi (polimorfisms)
}
}
Šajā piemērā myDog un myCat ir atsauces tipi Animal, bet pateicoties polimorfismam, izsaucot makeSound(), tiek izpildīta atbilstošā realizācija no Dog un Cat.