Sobes.tech
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);