types classes java
Deze tutorial bespreekt verschillende soorten klassen in Java, zoals Abstract, Concrete, Final, Inner, POJO, Static en andere speciale klassen met voorbeelden:
In onze vorige tutorial hebben we klassen en objecten in Java besproken. Een klasse in Java is een sjabloon of blauwdruk. Het kan ook worden gedefinieerd als een verzameling vergelijkbare objecten. We definiëren objecten van het type klasse en communiceren vervolgens via deze objecten.
Elk object is een instantie van een klasse met een status en gedrag.
Bezoek hier voor de exclusieve Java Training Tutorial Series.
Wat je leert:
- Klassetypes in Java - Inleiding
- Soorten klassen in Java
- Andere speciale klassen in Java
- Gevolgtrekking
Klassetypes in Java - Inleiding
We weten allemaal dat de klas de volgende componenten heeft:
- Modificatoren: Geef de toegang voor de klas op.
- Naam van de klasse: Naam van de klas.
- Sleutelwoorden: Trefwoorden die suggereren of een klasse een klasse of interface uitbreidt of implementeert.
- De hoofdtekst van de klasse tussen accolades {}
Afhankelijk van de verschillende gebruikte modifiers, de gespecificeerde klasse-body en de gebruikte trefwoorden, hebben we verschillende soorten klassen in Java.
vragen en antwoorden voor prestatietests
- Concrete klasse: Een normale klasse die de concrete implementatie van methoden heeft.
- POJO klasse: Dit is een 'gewoon oud Java-object' dat alleen privélidvariabelen bevat en getter-setter-methoden om toegang te krijgen tot deze variabelen.
- Abstracte klasse: Deze klasse heeft een of meer abstracte methoden.
- Laatste klasse: Een laatste klasse kan niet worden overgenomen.
- Statische klasse: Een klasse die alleen statische leden bevat.
- Innerlijke klasse: Een innerlijke klasse is een klasse die lid is van een andere klasse.
In deze tutorial bespreken we elk van deze klassetypes met voorbeelden.
We zullen ook enkele andere soorten klassen bespreken die in Java als speciale klassen worden beschouwd.
- Anonieme klas: Een klas zonder enige naam.
- Onveranderlijke klasse: Een klasse waarvan het object niet kan worden gewijzigd.
- Singleton-klasse: Een klasse waarvan een enkele instantie kan worden gemaakt.
- Object klasse: De basisklasse van alle Java-functies.
- Wikkelklasse: Elk primitief gegevenstype in Java heeft een wrapper-klasse.
Maar laten we eerst kort bespreken hoe we een klasse in Java kunnen importeren, samen met de klasse Main in Java die de hoofdmethode of het startpunt in Java bevat.
Importeren in Java
Als we in Java een functie of functionaliteit in ons programma willen opnemen, kunnen we de instructie 'import' gebruiken. Met behulp van de importverklaring kunnen we een heel pakket importeren en de functionaliteit ervan in ons programma gebruiken of we kunnen ook een enkele klasse opnemen.
Hieronder vindt u de syntaxis voor de importinstructie.
Als we het java.lang-pakket en al zijn klassen willen importeren, kunnen we de volgende verklaring schrijven:
Stel dat we de functionaliteit van de Arrays-klasse in ons programma willen opnemen, dan kunnen we de volgende verklaring schrijven:
De importinstructie is gelijk aan de instructie C / C ++ include. De importinstructie wordt als eerste instructie aan het begin van het Java-programma geplaatst. We kunnen meer dan één verklaring hebben in het Java-programma.
Hoofdklasse in Java
We zijn ons er al van bewust dat in Java de methode main () het startpunt is van elke programma-uitvoering en deze in elke klasse van die specifieke toepassing kan worden geplaatst. Als we echter een complexe applicatie hebben met te veel bestanden en klassen, dan is het raadzaam om een klasse Main te hebben en de methode main () in deze klasse Main te plaatsen.
Merk op dat de JVM geen object van de klasse Main maakt. De logica hierachter is dat, aangezien main () een statische methode is, deze kan worden aangeroepen zonder enig klasseobject.
Soorten klassen in Java
Laten we nu verder gaan met de soorten klassen in Java. We zullen elk van deze klassen een voor een uitleggen, gevolgd door de programmeervoorbeelden.
# 1) Betonklasse
Een concrete klasse is een normale klasse in een Java-programma. Deze klasse heeft geen abstracte methoden. Alle methoden in de betonklasse zijn volledig geïmplementeerd.
Een concrete klasse kan erven van een andere klasse, zelfs een abstracte klasse, of een interface implementeren. We kunnen de concrete klasse instantiëren en zijn objecten maken.
Een eenvoudig voorbeeld van een concrete klasse wordt hieronder weergegeven.
Uitvoer
Bovenstaand programma toont een concrete les. We zien dat deze klasse een volledige implementatie heeft. Er is niets onvolledig of niet geïmplementeerd.
# 2) POJO-klas
Een POJO (Plain Old Java Object) is een klasse die alleen privélidvariabelen bevat. Afgezien van de privélidvariabelen bevat het alleen getter- en settermethoden die door deze lidvariabelen worden gebruikt.
Een POJO-klasse heeft zijn gedrag niet. Het kan echter sommige methoden overschrijven, zoals gelijken of interfaces.
Eigenschappen van POJO-klasse:
- POJO-klasse moet een openbare getter- en setter-methode hebben.
- Alle leden of instantievariabelen moeten privé zijn.
- De POJO-klasse breidt of implementeert geen klassen of interfaces die vooraf zijn gespecificeerd.
- Ze bevatten geen annotaties die vooraf zijn gespecificeerd.
- Heeft geen constructor zonder argumenten (constructor zonder argument).
Hieronder is een Java-programma gegeven dat de POJO-klasse demonstreert.
Uitvoer
De bovenstaande demonstratie van de POJO-klasse laat zien dat deze een privévariabele heeft en de getter-setter-methoden voor deze variabele. Om toegang te krijgen tot deze lidvariabele gebruiken we de getter-methode. De setter-methode wordt gebruikt om de waarde bij te werken.
# 3) Abstracte klasse
Een abstracte klasse is een klasse die onvolledig is of waarvan de implementatie niet is voltooid. Een abstracte klasse kan niet worden geïnstantieerd. Het moet worden uitgebreid met de andere klassen en de methoden ervan implementeren om een concrete klasse te vormen.
Een abstracte klasse wordt gedeclareerd door het trefwoord ‘abstract’ te gebruiken. Een abstracte klasse kan zowel statische en definitieve methoden als constructors hebben.
Laten we een abstracte klasse in Java demonstreren.
Uitvoer
In het bovenstaande programma hebben we een interface vermenigvuldigen. We creëren een abstract class Product dat een multiply interface implementeert. Binnen het product hebben we een methodeproduct dat niet is geïmplementeerd. Dan hebben we een Main-klasse die de Product-klasse erft en de productmethode implementeert. Later noemen we deze methode op het Main class-object.
# 4) Statische klasse
Een statisch in Java betekent in het algemeen het object dat tot een klasse behoort en niet tot de individuele instanties. Een statisch lid of een statische methode in Java hoeft dus niet met een object te worden benaderd, maar rechtstreeks met een klassenaam.
Een statische klasse in Java kan alleen statische leden bevatten. We kunnen ook geen statische klasse instantiëren.
Het volgende Java-programma demonstreert een statische klasse.
Uitvoer
De bovenstaande klasse demonstreert de statische klasse. Hier hebben we een statische klasse die lid is van een andere concrete klasse. Binnen de statische klasse berekenen we de som van twee getallen en slaan het resultaat op in een statische variabele die deel uitmaakt van de buitenste klasse.
# 5) Laatste klasse
Een laatste klasse is een klasse die niet kan worden overgenomen of onderverdeeld. Zodra een klasse definitief is verklaard in Java, is het een soort constante en wordt het onveranderlijk.
Om een klasse onveranderlijk te maken, moeten we deze daarom als definitief verklaren.
Uitvoer
Het bovenstaande programma declareert eerst een Base_Class die is gemarkeerd als 'final'. Dus als we het proberen uit te breiden in Derived_Class, krijgen we een compilatiefout. (De commentaarregel). Maar we kunnen het object maken en de weergavemethode aanroepen.
# 6) Geneste klasse / innerlijke klasse
Geneste klasse, ook wel bekend als Inner class in Java, wordt gebruikt om inkapseling te verbeteren. Een geneste klasse / Innerlijke klasse is een klasse die is ingesloten in een andere klasse.
Net zoals een klasse variabelen en methoden als leden heeft, kan het ook een innerlijke klasse als lid hebben.
Een geneste klasse heeft de volgende structuur:
Innerlijke klassen hebben de volgende subtypen:
- Geneste innerlijke klasse
- Methode Lokaal Innerlijke klasse
- Anonieme innerlijke klasse
- Statische geneste klasse
# 1) Geneste innerlijke klasse
Een geneste binnenste klasse heeft toegang tot privélidvariabelen van een buitenste klasse. We kunnen ook toegangsmodificatoren toepassen op de geneste binnenste klasse.
# 2) Methode Lokale Innerlijke Klasse
Dit is de binnenste klasse die wordt gedeclareerd in een buitenste klassenmethode.
# 3) Anonieme innerlijke klasse
Anonieme innerlijke klasse is een innerlijke klasse gedeclareerd binnen een buitenste klasse en heeft geen naam.
# 4) Statische geneste klasse
Zoals een klasse een statische lidvariabele heeft, kan deze ook een statische klasse als lid hebben.
Een voorbeeld van een geneste / innerlijke klasse wordt hieronder gegeven:
Uitvoer
Andere speciale klassen in Java
Onveranderlijke klasse in Java
Een onveranderlijke klasse genereert onveranderlijke objecten. Een onveranderlijk object is een object waarvan de inhoud niet kan worden gewijzigd nadat het object is gemaakt. Dus een onveranderlijke klasse is degene waarvan het object niet kan worden gewijzigd nadat het is gemaakt.
Alle wrapper-klassen in Java voor primitieve typen (geheel getal, booleaans, byte, etc.) zijn onveranderlijk. De klasse String is ook onveranderlijk.
We kunnen ook door de gebruiker gedefinieerde onveranderlijke klassen in Java hebben.
Om een klasse onveranderlijk te maken, moet deze samen met al zijn gegevensleden definitief worden verklaard. Ook moet de klasse een constructor met parameters hebben. Alle lidvariabelen moeten een getter-methode hebben, maar geen setter-methode.
Aan alle bovenstaande vereisten moet worden voldaan om een klasse onveranderlijk te maken.
Laten we een Java-programma implementeren om de onveranderlijke klasse te demonstreren.
Uitvoer
In het bovenstaande programma hebben we een City-klasse uitgeroepen. Dit is een laatste klasse en in deze klasse hebben we twee lidvariabelen en een geparametriseerde constructor gedeclareerd. We hebben ook getter-methoden gedeclareerd voor deze twee lidvariabelen. Dus de City-klasse voldoet aan alle eisen van een onveranderlijke klasse.
Let op de coderegel met commentaar in de hoofdmethode. Als we deze regel verwijderen, krijgen we een compileerfout (vermeld in de opmerking hier) omdat we proberen de waarde voor een lidvariabele in te stellen.
Singleton-klasse in Java
Een singleton-klasse staat één instantie tegelijk toe. In Java is een singleton een ontwerppatroon. Dit ontwerppatroon zorgt ervoor dat er op elk moment slechts één instantie van een klasse bestaat. Dus elke klasse die als singleton is gedefinieerd, heeft één toegangspunt en is globaal.
Merk op dat het beëindigen van de levenscyclus van een toepassing geen enkele klasse vernietigt zoals de normale klassen. Als een klasse singleton wordt gedeclareerd, maken we niet elke keer een nieuwe instantie aan als er een nieuw verzoek voor het object wordt gedaan.
Dezelfde instantie wordt keer op keer gebruikt. Op deze manier kunnen we de geheugenruimte vooral besparen in het geval van multi-threaded en database-applicaties.
We kunnen een singleton-klasse gebruiken voor activiteiten zoals caching, logging, enz.
hoe swf-bestanden te openen met Adobe Flash Player
Het volgende programma demonstreert een Singleton-klasse.
Uitvoer
In het bovenstaande programma hebben we een singleton-klasse gedefinieerd met een privéconstructor. We hebben een lidvariabele van het String-type gedefinieerd. In de hoofdmethode declareren we twee instanties van de singleton-klasse. Vervolgens veranderen we de String-variabele met een van de instanties.
Als we de String-waarde voor beide instanties afdrukken, merken we dat de String-variabele waarde voor beide instanties is gewijzigd. Dus hoewel we de waarde slechts voor één instantie hebben gewijzigd, vanwege de singleton-klasse, worden wijzigingen in alle instanties weerspiegeld.
We retourneren altijd hetzelfde exemplaar, ook al lijken we verschillende exemplaren te maken.
Objectklasse in Java
De Object-klasse is de bovenliggende klasse of de eerste klasse in Java. Het bevindt zich op het hoogste niveau van de Java-hiërarchie.
Omdat alle klassen de Object-klasse als superklasse hebben, implementeren alle Java-objecten inclusief Arrays de Object-klassemethoden. De objectklasse is aanwezig in het pakket 'java.lang'.
Verklaring voor java.lang.Object is:
openbare klasse Object
De volgende tabel beschrijft de constructors en methoden van de klasse Object.
Constructor / methode | Omschrijving |
---|---|
Klasse getClass () | Retourneert de runtime-klasse van het object. |
Constructor van objectklasse | |
Voorwerp() | Constructor van objectklasse |
Objectklassemethoden | |
beschermd object kloon () | Retourneert een kloon of kopie van het object. |
boolean is gelijk aan (Object obj) | Controleert of een bepaald objectobjekt gelijk is aan dit object. |
beschermde leegte finaliseren () | Geroepen door de garbage collector wanneer alle verwijzingen naar het object zijn vernietigd. |
int hashCode () | Retourneert hash-code voor het object. |
ongeldig melden () | Gebruik om een enkele wachtende thread te activeren. |
ongeldig informerenAll () | Maakt alle wachtende discussies wakker. |
String toString () | Retourneert het String-equivalent van het object. |
ongeldig wachten () | Laat een thread wachten totdat deze wordt gewekt door de notificatiemethode door een andere thread. |
ongeldig wachten (lange time-out) | Laat de thread wachten tot de tijd die door de ‘time-out’ is verstreken, is verstreken of wordt gewekt door de methoden Not of NotificAll. |
ongeldig wachten (lange time-out, int nanos) | Zorgt ervoor dat de thread wacht tot de opgegeven tijd is verstreken of totdat notificatie () of notificatieAll () wordt aangeroepen door een andere thread. |
Laten we een voorbeeld Java-programma implementeren dat enkele van de objectklassemethoden zal demonstreren.
Uitvoer
Hier hebben we een hoofdklasse. In de main method () maken we een object van de Main class. Dit object is een afstammeling van de klasse Object en ondersteunt alle methoden van de klasse Object. Daarom gebruiken we dit object en roepen we een paar objectklassemethoden aan, zoals hashCode (), System.GC (), finalize () enz.
Wrapper-klasse in Java
Java biedt een functie met de naam wrapper-klasse die een mechanisme heeft dat primitief gegevenstype omzet in object en vice versa. Wrapper-klassen zijn de klassen die primitieve typen zoals int, char, etc. als objecten vertegenwoordigen.
Dus elk primitief gegevenstype in Java heeft zijn bijbehorende wrapper-klasse.
De volgende tabel toont de primitieve gegevenstypen en hun equivalente wrapper-klasse.
Primitief type | Wikkeltype |
---|---|
vlotter | Vlotter |
boolean | Boolean |
char | Karakter |
byte | Byte |
kort | Kort |
int | Geheel getal |
lang | Lang |
dubbele | Dubbele |
Om de primitieven in objecten en objecten in primitieven om te zetten, hebben we technieken die respectievelijk 'autoboxing' en 'boxing' worden genoemd. Ase Java is een objectgeoriënteerde programmeertaal, we hebben altijd te maken met objecten en we hebben ook veel functies zoals verzamelingen, Serialisatie , enz. die ook objecten en primitieve typen nodig hebben.
Het is dus absoluut noodzakelijk dat we altijd objecten en primitieve typen in Java nodig hebben en daarom hebben we deze technieken van autoboxen en unboxen nodig.
Autoboxing
Autoboxing is een techniek waarbij een primitief gegevenstype automatisch wordt geconverteerd naar een object van de bijbehorende wrapper-klasse. Bijvoorbeeld , conversie van int naar Integer-klasse, char naar Character-klasse, enz. zijn voorbeelden van autoboxing.
Notitie: Wrapper-klassen gebruiken de methode valueOf () om de primitieve om te zetten in objecten die worden afgeschreven sinds Java 5.
Uitpakken
De omgekeerde conversie van objecten uit de wrapper-klasse naar hun overeenkomstige primitieve gegevenstypen wordt 'unboxing' genoemd.
Notitie: Sinds Java 5 wordt de methode intValue () die het wrapper-object in een primitief type omzet, afgeschreven.
Hieronder is een voorbeeld van boksen / unboxen gegeven.
Uitvoer
Het bovenstaande programma toont autoboxing en unboxing op int-waarde. Eerst converteren we int naar Integer-object en vervolgens wordt een Integer-object geconverteerd naar het gegevenstype int.
Laten we een programma implementeren dat de wrapper-klassen demonstreert die aanwezig zijn in Java.
Uitvoer
De bovenstaande programma-uitvoer toont de conversie van primitieve typen naar wrapper-objecten (Autoboxing) en keert de conversie om van wrapper-objecten naar primitieve typen (unboxing).
Veel Gestelde Vragen
V # 1) Wat is het Class Data-type in Java?
Antwoord: Java biedt een klasse met de naam 'Class' die informatie bevat over alle klassen, objecten en interfaces van de actieve toepassing. De klasse Class vertegenwoordigt ook primitieve gegevenstypen en het ongeldige type.
De klasse Class is een onderdeel van het pakket java.lang.
Vraag 2) Wat is de normale klasse in Java?
Antwoord: Een normale klasse in Java is een niet-statische klasse. We kunnen objecten van een normale klasse maken met behulp van het nieuwe trefwoord. Elke normale klasse kan ook een andere klasse als lid hebben. In dit geval wordt de lidklasse geneste of binnenste klasse genoemd en de omsluitende klasse wordt buitenste klasse genoemd.
V # 3) Is String een Wrapper-klasse in Java?
Antwoord: Nee, String is geen wrapper-klasse in Java. Om een klasse een wrapper-klasse te laten zijn, hebben we het overeenkomstige primitieve type nodig. Bijvoorbeeld, voor Integer wrapper class hebben we primitief type int. Voor de klasse String hebben we geen overeenkomstig primitief gegevenstype.
V # 4) Wat is het voordeel van Wrapper Class?
Antwoord: Wrapper-klassen worden gebruikt voor de conversie van primitieve gegevenstypen naar objecten. Met andere woorden, wrapper-klassen wikkelen primitieve typen in objecten. Wrapper-klassen worden gebruikt wanneer bepaalde Java-functies, zoals Collections, alleen objecten verwachten en geen primitieve gegevenstypen.
V # 5) Waarom wordt Singleton Class gebruikt in Java?
Antwoord: Wanneer we een globaal toegangspunt voor een bepaald object willen, gaan we voor een singleton-patroon waarmee we een singleton-klasse kunnen ontwerpen waarin er slechts één instantie is. Singleton-klassen worden gebruikt in caches, threadpooling, databasetoepassingen, logboekregistratie, enz.
open een xml-bestand in Excel
Gevolgtrekking
In deze tutorial hebben we de verschillende klassetypen behandeld die in Java worden gebruikt. We zagen de klassetypes concreet, abstract, definitief, statisch, Genest, POJO, etc.. Afgezien hiervan bespraken we ook Singleton-klassen, onveranderlijke klassen, en bespraken we ook hun implementatievoorbeelden.
We hebben ook betrekking op wrapper-klassen en objectklassen in Java. Wrapper-klassen zijn de klassen die de primitieve gegevenstypen van Java in objecten verpakken. Objectklasse in Java is de superklasse van alle andere klassen. Het is de hoogste klasse in de Java-hiërarchie.
Nu we de klassen en objecten in Java en de klassetypes hebben besproken, gaan we in de volgende tutorial verder met een gedetailleerde bespreking van constructors in Java.
Bekijk hier de perfecte Java-trainingsgids.
Aanbevolen literatuur
- Java-interface en abstracte les met voorbeelden
- Java Basics: Java Syntax, Java Class en Core Java Concepts
- Wat is een statisch trefwoord in Java?
- Java Integer en Java BigInteger-klasse met voorbeelden
- Zelfstudie voor Java-scannerklassen met voorbeelden
- Java Class Vs Object - Hoe klasse en object in Java te gebruiken
- Zelfstudie voor Java-array-klassen - java.util.Arrays-klasse met voorbeelden
- Wat is Java-vector | Java Vector Class-zelfstudie met voorbeelden