Sobes.tech
Junior

Kāda ir atšķirība starp abstrakciju un polimorfismu?

sobes.tech AI

Atbilde no AI

Abstrakcija koncentrējas uz detaļu slēpšanu un vienkāršota objekta attēlojuma nodrošināšanu. Polimorfisms ļauj apstrādāt dažādu klases objektus kā vienas pamata klases vai saskarnes objektus, izpildot katra objekta specifiskās darbības.

Raksturlielums Abstrakcija Polimorfisms
** būtība** Detaļu slēpšana, kopēja skatījuma nodrošināšana Spēja apstrādāt dažādu tipu objektus vienādi
Mērķis Vienkāršošana, sarežģītības samazināšana Elastīgums, paplašināmība, koda universālums
Kā tiek panākts Abstraktas klases, saskarnes Metožu pārrakstīšana, metožu pārklāšana, saskarnes
Piemērs Klase Auto bez dzinēja detaļām Metode braukt() dažādās klasēs (Sedans, Kravas)

Abstrakcijas piemērs (abstrakcijas izmantošana):

saskarne Shape {
    // Abstrakts metodes
    double calculateArea(); 
}

klase Circle ievieš Shape {
    privāts double radius;

    publiskais Circle(double radius) {
        this.radius = radius;
    }

    @Override
    public double calculateArea() {
        // Realizācijas detaļas ir slēptas aiz saskarnes metodes
        return Math.PI * radius * radius; 
}
}

Polimorfisma piemērs:

// Polimorfisma izmantošana
Shape myShape = jauns Circle(5); 
// Izsauc calculateArea() metodi caur bāzes tipa (saskarnes Shape) atsauci
// Faktiski tiks izpildīta `Circle` klases calculateArea() metode
double area = myShape.calculateArea(); 

System.out.println("Laukums: " + area);