Clasele abstracte sunt clase declarate cu abstract. Ele pot fi subclasate sau extinse, dar nu pot fi instantaneate. Vă puteți gândi la ele ca la un versiunea de clasă de interfețe sau ca o interfață cu cod real atașat metodelor.

De exemplu, spuneți că aveți o clasă Vehicle care definește funcționalitatea de bază (metodele) și componentele (variabilele obiect) pe care vehiculele le au în comun.

Nu puteți crea un obiect de Vehicle deoarece un vehicul este el însuși un concept abstract, general. Vehiculele au roți și motoare, dar numărul de roți și dimensiunea motoarelor pot diferi foarte mult.

Cu toate acestea, puteți extinde funcționalitatea clasei de vehicule pentru a crea un Car sau a Motorcycle:

abstract class Vehicle
{
  //variable that is used to declare the no. of wheels in a vehicle
  private int wheels;
  
  //Variable to define the type of motor used
  private Motor motor;
  
  //an abstract method that only declares, but does not define the start 
  //functionality because each vehicle uses a different starting mechanism
  abstract void start();
}

public class Car extends Vehicle
{
  ...
}

public class Motorcycle extends Vehicle
{
  ...
}

Amintiți-vă, nu puteți instanția un Vehicle oriunde în programul dvs. – în schimb, puteți utiliza fișierul Car și Motorcycle clasele pe care le-ați declarat anterior și creați instanțe din acestea:

Vehicle newVehicle = new Vehicle();    // Invalid
Vehicle car = new Car();  // valid
Vehicle mBike = new Motorcycle();  // valid

Car carObj = new Car();  // valid
Motorcycle mBikeObj = new Motorcycle();  // valid

Mai multe informatii:

  • Aflați programarea funcțională în Java – Curs complet
  • Getters și Seters în Java explicate
  • Moștenirea în Java explicată