Sobes.tech
Junior

Kuo skiriasi abstrakcija ir polimorfizmas?

sobes.tech AI

Atsakymas iš AI

Abstrakcija sutelkta į detalių slėpimą ir supaprastinto objekto vaizdavimo teikimą. Polimorfizmas leidžia apdoroti skirtingų klasių objektus kaip vieno bazinio klases ar sąsajos objektus, vykdant kiekvieno objekto specifinius veiksmus.

Savybė Abstrakcija Polimorfizmas
Prasmė Detalių slėpimas, bendro vaizdo suteikimas Galimybė apdoroti skirtingų tipų objektus vienodai
Tikslas Supaprastinimas, sudėtingumo mažinimas Lankstumas, plėtros galimybė, universalumas kodo
Kaip pasiekiama Abstraktūs klasės, sąsajos Metodų perkrovimas, metodų perrašymas, sąsajos
Pavyzdys Klasė Automobilis be variklio detalių Metodas važiuoti() skirtingose klasėse (Lengvasis, Krovininis)

Abstrakcijos pavyzdys (abstrakcijos naudojimas):

sąsaja Shape {
    // Abstraktus metodas
    double calculateArea(); 
}

klasė Circle įgyvendina Shape {
    privatus double radius;

    viešas Circle(double radius) {
        this.radius = radius;
    }

    @Override
    public double calculateArea() {
        // Realizacijos detalės paslėptos už sąsajos metodo
        return Math.PI * radius * radius; 
    }
}

Polimorfizmo pavyzdys:

// Polimorfizmo naudojimas
Shape myShape = new Circle(5); 
// Iškviečiame calculateArea() metodą per bazinio tipo (sąsajos Shape) nuorodą
// Iš tikrųjų bus vykdomas `Circle` klasės calculateArea() metodas
double area = myShape.calculateArea(); 

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