İstinad növündə verilənlərdə irsiyyət və çox formallıq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Mirasçılıq, yeni sinfinin (alt sinf, törəm sinf) mövcud sinfinin (ata sinfi, super sinf) sahələrini və metodlarını miras ala bilməsinə imkan verən mexanizmdir. Bu, kodun təkrar istifadəsini və siniflərin iyerarxiyasını təşviq edir.
Polimorfizm (şəkil müxtəlifliyi) obyektin bir neçə formaya sahib ola bilmə qabiliyyətidir. Referans tipləri kontekstində, bu, super sinif dəyişəninin alt sinif obyektinə istinad edə bilməsi deməkdir. Bu, müxtəlif alt sinif obyektlərinin ümumi interfeys və ya super sinif vasitəsilə vahid şəkildə işlənməsinə imkan verir.
İki əsas polimorfizm növü mövcuddur:
- Təhlil vaxtı (statik polimorfizm): adətən metodların yüklənməsi (method overloading) vasitəsilə əldə edilir, bir sinifdə eyni adda, lakin fərqli imzalar (parametrlərin sayı və ya tipləri) olan bir neçə metod mövcuddur.
- İcranın vaxtı (dinamik polimorfizm): metodların üst-üstə qoyulması (method overriding) vasitəsilə əldə edilir, alt sinif artıq super sinifdə müəyyən edilmiş metodun öz tətbiqini təqdim edir. Bu metod super sinifə istinad vasitəsilə çağırıldıqda, alt sinifin tətbiqi icra olunur (əgər obyekt tipi alt sinifdirsə).
Miras və dinamik polimorfizm nümunəsi:
// Əsas sinif
class Animal {
public void makeSound() {
System.out.println("Ümumi heyvan səsi");
}
}
// Alt sinif
class Dog extends Animal {
@Override // Metodun üst-üstə qoyulması
public void makeSound() {
System.out.println("Hav!");
}
}
// Alt sinif
class Cat extends Animal {
@Override // Metodun üst-üstə qoyulması
public void makeSound() {
System.out.println("Miy!");
}
}
public class Main {
public static void main(String[] args) {
// Statik tip Animal, dinamik tip Dog obyekti
Animal myDog = new Dog();
// Statik tip Animal, dinamik tip Cat obyekti
Animal myCat = new Cat();
// Statik tip Animal, dinamik tip Animal obyekti
Animal genericAnimal = new Animal();
// Polimorfizmin nümayişi
myDog.makeSound(); // Dog metodunu çağırır
myCat.makeSound(); // Cat metodunu çağırır
genericAnimal.makeSound(); // Animal metodunu çağırır
}
}
Bu nümunədə, Dog və Cat Animal-dən irs alır. myDog, myCat və genericAnimal dəyişənləri statik olaraq Animal tipindədir, lakin müxtəlif dinamik tiplərə (Dog, Cat, Animal) istinad edir. makeSound() metodunu çağırdıqda, hər bir istinad obyektin dinamik tipinə uyğun metod tətbiqini icra edir ki, bu da vaxtında polimorfizmdir.