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);