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 abstract
sleutelwoord 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 extends
sleutelwoord 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.