Java- abstractie


Abstracte lessen en methoden

Gegevensabstractie is het proces waarbij bepaalde details worden verborgen en alleen essentiële informatie aan de gebruiker wordt getoond.
Abstractie kan worden bereikt met abstracte klassen of interfaces (waarover u meer zult leren in het volgende hoofdstuk).

Het abstractsleutelwoord is een niet-toegangsmodifier, gebruikt voor klassen en methoden:

  • Abstracte klasse: is een beperkte klasse die niet kan worden gebruikt om objecten te maken (om toegang te krijgen, moet deze worden overgenomen van een andere klasse).

  • Abstracte methode: kan alleen worden gebruikt in een abstracte klasse en heeft geen lichaam. De body wordt geleverd door de subklasse (overgeërfd van).

Een abstracte klasse kan zowel abstracte als reguliere methoden hebben:

abstract class Animal {
  public abstract void animalSound();
  public void sleep() {
    System.out.println("Zzz");
  }
}

Uit het bovenstaande voorbeeld is het niet mogelijk om een ​​object van de klasse Animal te maken:

Animal myObj = new Animal(); // will generate an error

Om toegang te krijgen tot de abstracte klasse, moet deze worden overgenomen van een andere klasse. Laten we de klasse Animal die we in het hoofdstuk Polymorfisme hebben gebruikt, converteren naar een abstracte klasse:

Onthoud uit het hoofdstuk Overerving dat we het extendssleutelwoord gebruiken om van een klasse te erven.

Voorbeeld

// Abstract class
abstract class Animal {
  // Abstract method (does not have a body)
  public abstract void animalSound();
  // Regular method
  public void sleep() {
    System.out.println("Zzz");
  }
}

// Subclass (inherit from Animal)
class Pig extends Animal {
  public void animalSound() {
    // The body of animalSound() is provided here
    System.out.println("The pig says: wee wee");
  }
}

class Main {
  public static void main(String[] args) {
    Pig myPig = new Pig(); // Create a Pig object
    myPig.animalSound();
    myPig.sleep();
  }
}

Waarom en wanneer abstracte klassen en methoden gebruiken?

Om veiligheid te bereiken - verberg bepaalde details en toon alleen de belangrijke details van een object.

Opmerking: abstractie kan ook worden bereikt met interfaces , waarover u in het volgende hoofdstuk meer zult leren.