Sobes.tech
Junior

Czym jest klasa abstrakcyjna?

sobes.tech AI

Odpowiedź od AI

Klasa abstrakcyjna to klasa, której nie można utworzyć bezpośrednio za pomocą operatora new. Służy jako podstawa dla innych klas i może zawierać metody abstrakcyjne (bez implementacji) oraz zwykłe metody (z implementacją). Klasy abstrakcyjne definiuje się słowem kluczowym abstract.

Główne cechy:

  • Nie można tworzyć instancji: Nie można utworzyć obiektu samej klasy abstrakcyjnej.
  • Może zawierać metody abstrakcyjne: Metody bez ciała, które muszą być nadpisane w klasach pochodnych.
  • Może zawierać zwykłe metody: Metody z implementacją, które mogą być dziedziczone lub nadpisane.
  • Dziedziczenie: Klasy pochodne dziedziczą po klasie abstrakcyjnej i muszą zaimplementować wszystkie jej metody abstrakcyjne.

Przykład:

abstract class Shape {
  // Metoda abstrakcyjna bez implementacji
  double getArea();

  // Zwykła metoda z implementacją
  void describe() {
    print('To jest figura.');
  }
}

class Circle extends Shape {
  double radius;

  Circle(this.radius);

  // Implementacja metody abstrakcyjnej
  @override
  double getArea() {
    return 3.14 * radius * radius;
  }
}

class Square extends Shape {
  double side;

  Square(this.side);

  // Implementacja metody abstrakcyjnej
  @override
  double getArea() {
    return side * side;
  }
}