Junior
Jaka jest różnica między abstrakcją a polimorfizmem?
sobes.tech AI
Odpowiedź od AI
Abstrakcja koncentruje się na ukrywaniu szczegółów implementacji i dostarczaniu uproszczonego przedstawienia obiektu. Polimorfizm pozwala na obsługę obiektów różnych klas jako obiektów jednej klasy bazowej lub interfejsu, wykonując specyficzne działania dla każdego obiektu.
| Charakterystyka | Abstrakcja | Polimorfizm |
|---|---|---|
| Istota | Ukrywanie szczegółów, dostarczanie ogólnego widoku | Możliwość obsługi obiektów różnych typów w jednolity sposób |
| Cel | Uproszczenie, zmniejszenie złożoności | Elastyczność, rozszerzalność, uniwersalność kodu |
| Jak osiągnięto | Klasy abstrakcyjne, interfejsy | Przeciążanie metod, nadpisywanie metod, interfejsy |
| Przykład | Klasa Samochód bez szczegółów silnika |
Metoda jechać() w różnych klasach (Sedan, Ciężarówka) |
Przykład abstrakcji (użycie abstrakcji):
interface Kształt {
// Metoda abstrakcyjna
double obliczPole();
}
class Koło implements Kształt {
private double promień;
public Koło(double promień) {
this.promień = promień;
}
@Override
public double obliczPole() {
// Szczegóły implementacji są ukryte za metodą interfejsu
return Math.PI * promień * promień;
}
}
Przykład polimorfizmu:
// Użycie polimorfizmu
Kształt mojeKształt = new Koło(5);
// Wywołanie metody obliczPole() przez odwołanie do typu bazowego (interfejs Kształt)
// W rzeczywistości zostanie wywołana metoda obliczPole() z klasy Koło
double pole = mojeKształt.obliczPole();
System.out.println("Pole: " + pole);