Wat is Abstract Class op Java?

  • Abstracte klassen zijn net als alle andere normale klassen in Java. Het grote verschil tussen abstracte klasse en normale klasse is het maken van de abstracte klasse die we nodig hebben om het trefwoord 'ABSTARCT' te gebruiken. Het is een scheiding van klasse-implementatie.
  • Ze definieerden vroeger de veel voorkomende kenmerken van de subklassen. Een dergelijk type klasse waarnaar verwezen wordt als een abstracte klasse.
  • Het belangrijkste is dat we geen object van een abstracte klasse kunnen maken.
  • Abstracte klassen kunnen zowel abstracte als niet-abstracte methoden bevatten. Ze kunnen geen body van de abstracte methode bevatten, die alleen door de subklasse kan worden geleverd. Als de subklasse niet de implementatie van de abstracte methode biedt, moeten we deze expliciet ABSTRACT maken.
  • Met andere woorden, als een klasse een abstracte methode bevat, moet deze zichzelf definiëren als ABSTARCT.
  • Door abstracte klassen te gebruiken, kunnen we verschillende Java-klassen groeperen. Het optimaliseert ook de code en maakt de code leesbaarder en vermindert redundantie. Het biedt ook een sjabloon voor toekomstige klassen.

Syntaxis van abstracte klasse in Java

Hoe werkt Abstract Class op Java?

  • Een abstracte klasse heeft een abstracte methode en een niet-abstracte methode, dwz een abstracte methode zonder body en ze kunnen ook methoden hebben met implementatie.
  • Een abstracte klasse wordt gebruikt om de meest voorkomende functie te bieden die specifiek is voor verschillende klassen. Subklassen kunnen een andere implementatie van die abstracte methoden bieden op basis van hun behoeften of vereisten.
  • We kunnen geen object van een abstracte klasse maken met de 'nieuwe' operator, maar we kunnen nog steeds de constructor definiëren die alleen kan worden opgeroepen in de constructor van de subklasse. Subklasse constructor kan toegang krijgen tot een superklasse constructor om zijn variabele te initialiseren die in de subklasse mogelijk wordt gebruikt voor verdere vereisten.

Voorbeelden van abstracte klasse in Java

Human.java

package com.cont.article;
public abstract class Human
(
public abstract void whatTheylike();
public void doTheysleep()
(
System. out .println("Yes every human require sleep.");
)
)

Human1.java

package com.cont.article;
public class Human1 extends Human
(
@Override
public void whatTheylike()
(
System. out .println("we like to have icecream.");
)
)

Human2.java

package com.cont.article;
public class Human2 extends Human
(
@Override
public void whatTheylike()
(
System. out .println("we like to have coffee.");
)
)

TestHuman.java

package com.cont.article;
public class TestHuman
(
public static void main(String() args)
(
Human human1 = new Human1();
human1.whatTheylike();
Human human2 = new Human2();
human2.whatTheylike();
human1.doTheysleep();
human2.doTheysleep();
)
)

Output:

In het bovenstaande voorbeeld hebben we MENS als een abstracte klasse die de gemeenschappelijke behoeften, voorkeuren en antipathieën van een mens definieert. Er zijn verschillende soorten mensen met verschillende voorkeuren en antipathieën. Dus elk mens kan een specifieke implementatie bieden van wat ze leuk vinden. Dat zal alleen voor hen specifiek zijn.

Het belangrijkste voordeel van abstracte klasse is dat we een specifieke implementatie van methoden hebben volgens een vereiste die ook leidt tot het verminderen van redundantie, het vergroten van de leesbaarheid van code, het verbergen van de implementatie van methoden en dus voor gedeeltelijke abstractie.

We kunnen nog een voorbeeld geven om te begrijpen wanneer we abstracte klassen moeten gebruiken.

  • We moeten abstracte klasse gebruiken wanneer we gemeenschappelijke functionaliteit tussen verschillende klassen met specifieke implementatie willen delen.
  • In abstracte klassen moeten velden niet statisch en definitief zijn, we kunnen ook concrete methoden hebben die als privé, openbaar en beschermd worden gedefinieerd.

Laten we zeggen dat we één dierklasse hebben. Er zijn variëteiten van dieren die we op aarde hebben en ze verschillen allemaal in enige of belangrijke zin van elkaar. Het bevat alle algemene kenmerken van alles.

Nu kan deze klasse Animal geen methoden hebben die specifiek zijn voor elk dier. Door het concept van de Abstract-klasse kunnen we deze functionaliteit dus implementeren zonder overbodige code.

Alle dieren hebben een ander soort geluid, gewoontes, enz. Bijvoorbeeld, hond, kat, olifant en snack, ze hebben allemaal een ander geluid. Daarom kunnen we hiervoor een generieke methode in de bovenliggende klasse hebben waarmee alle andere subklassen of onderliggende klassen hun eigen specifieke implementatie kunnen bieden.

In de bovenliggende klasse, namelijk Animal, hebben we een generieke abstracte methode genaamd Sound (). Dus elke kindklasse moet deze methode overschrijven en zijn eigen specifieke implementatie bieden.

Abstracte klasse en interface?

  • Abstracte klasse en interface worden beide gebruikt om abstractie in Java te bereiken. Een abstracte klasse biedt gedeeltelijke abstractie, terwijl de interface 100% of volledige abstractie biedt.
  • Standaard zijn variabelen in een interface definitief. Maar de abstracte klasse bevat ook een niet-definitieve variabele. Evenzo kan abstracte klasse ook een statische, niet-statische variabele hebben. Maar Interface bevat alleen een laatste en statische variabele.
  • Lidvariabelen van een abstracte klasse kunnen lijken op privé, openbaar, beschermd, maar ze zijn standaard openbaar in het geval van de interface.
  • Een abstracte klasse kan een andere Java-klasse uitbreiden en meerdere interfaces implementeren, maar een interface kan alleen een andere interface uitbreiden. Een abstracte klasse kan een implementatie van een interface bieden, maar een interface kan dit niet.
  • We gebruiken werktuigen en breiden sleutelwoorden uit om respectievelijk interface en klassen te implementeren en uit te breiden.
  • Via de methode kunnen we de niet-statische en niet-definitieve variabelen van een abstracte klasse wijzigen of openen.

Conclusie

  • Abstracte klasse die wordt gebruikt om gedeeltelijke abstractie te bieden. Een abstracte klasse kan niet worden geïnstantieerd met het trefwoord NEW.
  • Een abstracte methode heeft geen body en eindigt altijd met een puntkomma (;).
  • Abstracte klasse bevat abstracte en niet-abstracte methoden.
  • Subklasse van een abstracte superklasse, moet een implementatie van alle abstracte methoden bieden, als deze niet voorziet, moet deze zichzelf verklaren als abstracte klasse.
  • Een subklasse kan abstract zijn, zelfs als de superklasse concreet is.
  • Een niet-abstracte klasse kan geen abstracte methoden bevatten. Ook is de abstracte methode niet-statisch.
  • Daarom kunnen we zeggen dat abstracte klassen ook abstracte en concrete methoden bevatten, zodat ze geen 100% abstractie kunnen bieden. Het is een proces waarbij de complexe logica voor de eindgebruiker wordt verborgen en alleen de services worden weergegeven. Een subklasse kan abstract zijn, zelfs als de superklasse concreet is, en deze kan ook als gegevenstype worden gebruikt.
  • Een abstracte klasse kan statische velden en statische methoden hebben. U kunt deze statische leden gebruiken met een klassenverwijzing.

Aanbevolen artikelen

Dit is een gids voor Abstract Class op Java. Hier bespreken we de syntaxis en voorbeelden van abstracte klasse in Java, samen met abstracte klasse en interface. U kunt ook de volgende artikelen bekijken voor meer informatie -

  1. Java-interface versus abstracte klasse
  2. BoxLayout in Java
  3. Wat is Java SE?
  4. Wat is Java-erfenis?
  5. Hoe werkt Abstract Class in PHP?
  6. Abstracte klasse in C ++
  7. Gids voor statische methode in PHP
  8. Volledig overzicht van de statische JavaScript-methode