Sobes.tech
Junior

Cos'è una classe astratta?

sobes.tech AI

Risposta dell'AI

Una classe astratta è una classe che non può essere creata direttamente usando l'operatore new. Serve come base per altre classi e può contenere metodi astratti (senza implementazione) e metodi normali (con implementazione). Le classi astratte sono definite con la parola chiave abstract.

Caratteristiche principali:

  • Impossibile da istanziare: Non è possibile creare un oggetto della classe astratta stessa.
  • Può contenere metodi astratti: Metodi senza corpo, che devono essere sovrascritti nelle classi derivate.
  • Può contenere metodi normali: Metodi con implementazione, che possono essere ereditati o sovrascritti.
  • Eredità: Le classi derivate ereditano dalla classe astratta e devono implementare tutti i suoi metodi astratti.

Esempio:

abstract class Shape {
  // Metodo astratto senza implementazione
  double getArea();

  // Metodo normale con implementazione
  void describe() {
    print('Questa è una figura.');
  }
}

class Circle extends Shape {
  double radius;

  Circle(this.radius);

  // Implementazione del metodo astratto
  @override
  double getArea() {
    return 3.14 * radius * radius;
  }
}

class Square extends Shape {
  double side;

  Square(this.side);

  // Implementazione del metodo astratto
  @override
  double getArea() {
    return side * side;
  }
}