Java abstrakce
Abstraktní třídy a metody
Abstrakce dat je proces skrytí určitých detailů a zobrazení pouze podstatných informací uživateli.
Abstrakce lze dosáhnout buď abstraktními třídami nebo
rozhraními (o kterých se více dozvíte v další kapitole).
Klíčové abstract
slovo je modifikátor bez přístupu, který se používá pro třídy a metody:
- Abstraktní třída: je omezená třída, kterou nelze použít k vytváření objektů (pro přístup k ní musí být zděděna z jiné třídy).
- Abstraktní metoda: lze ji použít pouze v abstraktní třídě a nemá tělo. Tělo poskytuje podtřída (zděděná od).
Abstraktní třída může mít jak abstraktní, tak regulární metody:
abstract class Animal {
public abstract void animalSound();
public void sleep() {
System.out.println("Zzz");
}
}
Z výše uvedeného příkladu není možné vytvořit objekt třídy Animal:
Animal myObj = new Animal(); // will generate an error
Chcete-li získat přístup k abstraktní třídě, musí být zděděna z jiné třídy. Pojďme převést třídu Animal, kterou jsme použili v kapitole Polymorfismus , na abstraktní třídu:
Pamatujte si z kapitoly Dědičnost , že klíčové slovo používáme extends
k dědění od třídy.
Příklad
// 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();
}
}
Proč a kdy používat abstraktní třídy a metody?
Chcete-li dosáhnout bezpečnosti - skryjte určité detaily a zobrazte pouze důležité detaily objektu.
Poznámka: Abstrakce lze dosáhnout také pomocí rozhraní , o kterých se více dozvíte v další kapitole.