Abstrakcja Java
Klasy i metody abstrakcyjne
Abstrakcja danych to proces ukrywania pewnych szczegółów i pokazywania użytkownikowi tylko niezbędnych informacji.
Abstrakcję można osiągnąć za pomocą klas abstrakcyjnych lub
interfejsów (o czym dowiesz się więcej w następnym rozdziale).
Słowo abstract
kluczowe jest modyfikatorem bez dostępu, używanym dla klas i metod:
- Klasa abstrakcyjna: jest klasą zastrzeżoną, której nie można używać do tworzenia obiektów (aby uzyskać do niej dostęp, musi zostać odziedziczona z innej klasy).
- Metoda abstrakcyjna: może być używana tylko w klasie abstrakcyjnej i nie ma treści. Ciało jest dostarczane przez podklasę (odziedziczoną z).
Klasa abstrakcyjna może mieć zarówno metody abstrakcyjne, jak i zwykłe:
abstract class Animal {
public abstract void animalSound();
public void sleep() {
System.out.println("Zzz");
}
}
Z powyższego przykładu nie można stworzyć obiektu klasy Animal:
Animal myObj = new Animal(); // will generate an error
Aby uzyskać dostęp do klasy abstrakcyjnej, musi być ona odziedziczona z innej klasy. Skonwertujmy klasę Animal, której użyliśmy w rozdziale Polimorfizm , na klasę abstrakcyjną:
Pamiętaj z rozdziału Dziedziczenie , że używamy extends
słowa kluczowego do dziedziczenia z klasy.
Przykład
// 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();
}
}
Dlaczego i kiedy używać abstrakcyjnych klas i metod?
Aby osiągnąć bezpieczeństwo - ukryj pewne szczegóły i pokaż tylko ważne szczegóły obiektu.
Uwaga: Abstrakcję można również osiągnąć za pomocą interfejsów , o których dowiesz się więcej w następnym rozdziale.