types classes java
Denna handledning diskuterar olika typer av klasser i Java som abstrakt, konkret, slutlig, inre, POJO, statisk och andra specialklasser med exempel:
I vår tidigare handledning diskuterade vi klasser och objekt i Java. En klass i Java är en mall eller ritning. Det kan också definieras som en samling av liknande objekt. Vi definierar objekt av typklass och kommunicerar sedan via dessa objekt.
Varje objekt är en förekomst av en klass som har ett tillstånd och beteende.
=> Besök här för den exklusiva Java-utbildningsserien.
Vad du kommer att lära dig:
Klasstyper i Java - Introduktion
Vi vet alla att klassen har följande komponenter:
- Modifierare: Ange åtkomst för klassen.
- Klassnamn: Klassens namn.
- Nyckelord: Nyckelord som tyder på om en klass utökar eller implementerar klass eller gränssnitt.
- Klassen Kropp inhägnad i lockiga parenteser {}
Beroende på olika modifierare som används, klasskroppsspecificerad och nyckelord som används har vi olika typer av klasser i Java.
gratis backup-program för Windows 7
- Betongklass: En normal klass som har konkret implementering av metoder.
- POJO-klass: Detta är 'Plain Old Java Object' som bara innehåller privata medlemsvariabler och getter-settermetoder för att komma åt dessa variabler.
- Abstrakt klass: Denna klass har en eller flera abstrakta metoder.
- Slutlig klass: En sista klass kan inte ärvas.
- Statisk klass: En klass som endast innehåller statiska medlemmar.
- Inre klass: En inre klass är en klass som är medlem i en annan klass.
I denna handledning kommer vi att diskutera var och en av dessa klasstyper med exempel.
Vi kommer också att diskutera några andra typer av klasser som betraktas som specialklasser i Java.
- Anonym klass: En klass utan namn.
- Oföranderlig klass: En klass vars objekt inte kan ändras.
- Singleton-klass: En klass vars enda instans kan skapas.
- Objektklass: Basklassen för alla Java-funktioner.
- Förpackningsklass: Varje primitiv datatyp i Java har en omslagsklass.
Men först, låt oss kort diskutera hur man importerar en klass i Java tillsammans med huvudklassen i Java som innehåller huvudmetoden eller startpunkten i Java.
Importera i Java
I Java, om vi vill inkludera någon funktion eller funktionalitet i vårt program, kan vi använda 'import' -uttrycket. Med hjälp av importuttalande kan vi importera ett helt paket och använda dess funktionalitet i vårt program eller så kan vi inkludera en enda klass.
Nedan följer syntaxen för importförklaringen.
import packageName/classname;
Om vi vill importera java.lang-paketet och alla dess klasser kan vi skriva följande uttalande:
import java.lang.*;
Antag att vi vill inkludera funktionerna i Arrays-klassen i vårt program, då kan vi skriva följande uttalande:
import java.util.Arrays;
Importdeklarationen motsvarar C / C ++ include-uttalande. Importförklaringen placeras i början av Java-programmet som det första uttalandet. Vi kan ha mer än ett uttalande i Java-programmet.
Huvudklass i Java
Vi är redan medvetna om att i Java är huvudmetoden () startpunkten för alla programkörningar och den kan placeras i vilken klass som helst i det specifika programmet. Men om vi har en komplex applikation med för många filer och klasser, är det lämpligt att ha en huvudklass och placera huvudmetoden () i denna huvudklass.
class Main{ public static void main(String() args){ System.out.println(“Hello, World!”); } }
Observera att JVM inte skapar ett objekt av klass Main. Logiken bakom detta är att eftersom main () är en statisk metod kan den anropas utan något klassobjekt.
Typer av klasser i Java
Låt oss nu gå vidare till klasserna i Java. Vi kommer att förklara var och en av dessa klasser en efter en följt av programmeringsexemplen.
# 1) Betongklass
En konkret klass är vilken normal klass som helst i ett Java-program. Denna klass har inga abstrakta metoder. Alla metoder i betongklassen är fullständigt implementerade.
En konkret klass kan ärva från en annan klass, till och med en abstrakt klass eller implementera ett gränssnitt. Vi kan starta betongklassen och skapa dess objekt.
Ett enkelt exempel på en konkret klass visas nedan.
public class Main { // Concrete Class example static int total(int val1, int val2) { return val1 + val2; } public static void main(String args()) { int sum = total(100, 108); System.out.println('Total of two integers: ' + sum); } }
Produktion
Ovanstående program visar en konkret klass. Vi ser att denna klass har en fullständig implementering. Det finns inget kvar ofullständigt eller oförändrat.
# 2) POJO-klass
En POJO (Plain Old Java Object) är en klass som endast innehåller privata medlemsvariabler. Förutom de privata medlemsvariablerna innehåller den bara getter- och settermetoder som används av dessa medlemsvariabler.
En POJO-klass har inte sitt beteende. Det kan dock åsidosätta vissa metoder som lika eller gränssnitt.
Egenskaper för POJO-klass:
- POJO-klassen måste ha en offentlig metod och settermetod.
- Alla medlemmar eller instansvariabler ska vara privata.
- POJO-klassen utökar eller implementerar inte klasser eller gränssnitt som är fördefinierade.
- De innehåller inte anteckningar som är fördefinierade.
- Har inte en konstruktör utan några argument (konstruktion utan argument).
Nedan följer ett Java-program som visar POJO-klassen.
//declare a POJO class class POJO_Class { private int daysOfWeek=7; //private variable public int getdaysOfWeek() { //getter return daysOfWeek; } public void setdaysOfWeek(int dow) { //setter this.daysOfWeek = dow; } } public class Main { public static void main(String args()){ POJO_Class pojoDemo = new POJO_Class(); //instance of POJO class System.out.println('Days of the week:' + pojoDemo.getdaysOfWeek()); } }
Produktion
Ovanstående demonstration av POJO-klassen visar att den har en privat variabel och getter-setter-metoderna för denna variabel. För att komma åt denna medlemsvariabel använder vi metoden getter. Settermetoden används för att uppdatera värdet.
# 3) Abstrakt klass
En abstrakt klass är en klass som är ofullständig eller vars implementering inte är klar. En abstrakt klass kan inte instansieras. Det måste utvidgas av de andra klasserna och implementera dess metoder för att bilda en konkret klass.
En abstrakt klass deklareras med hjälp av nyckelordet ”abstrakt”. En abstrakt klass kan ha både statiska och slutliga metoder och konstruktörer.
Låt oss demonstrera en abstrakt klass i Java.
interface multiply //interface multiply { int product(int num1, int num2); } // abstract class abstract class Product implements multiply { // this is an abstract method to calculate product of two numbers public abstract int product(int num1, int num2); } // Concrete class :this will implement the abstract method above class Main extends Product { public int product(int num1, int num2) { return num1*num2; } // main method public static void main(String args()) { Main obj = new Main(); int prod = obj.product(100, 20); // print product System.out.println('Product of two numbers: ' + prod); } }
Produktion
I ovanstående program har vi ett gränssnitts multiplicera. Vi skapar en abstrakt klassprodukt som implementerar ett multiplikationsgränssnitt. Inuti produkten har vi en metodprodukt som inte implementeras. Sedan har vi en huvudklass som ärver produktklassen och implementerar produktmetoden. Senare kallar vi den här metoden på huvudklassobjektet.
# 4) Statisk klass
En statisk i Java betyder i allmänhet objektet som tillhör en klass och inte till de enskilda instanserna. Så en statisk medlem eller metod i Java behöver inte nås med ett objekt utan direkt med ett klassnamn.
En statisk klass i Java kan endast innehålla statiska medlemmar. Vi kan inte heller starta en statisk klass.
Följande Java-program visar en statisk klass.
class Static_Class { static int total; // static variable static void sum(int val1, int val2) { // static method System.out.print('Static method to calculate sum:' + ' '); total = val1 + val2; System.out.println(val1 + '+' + val2); // print the numbers } static class Nested_Class { // static class static { // static block System.out.println('static block inside a static nested class'); } public void displaySum() { sum(25, 75); // call static method // print the value in static variable total, it holds the sum of two numbers System.out.println('Sum of two numbers:' + total); } } } public class Main { public static void main(String args()) { // declare static class object Static_Class.Nested_Class object = new Static_Class.Nested_Class(); object.displaySum(); // call displaySum method inside a static class } }
Produktion
Ovanstående klass visar den statiska klassen. Här har vi en statisk klass som är medlem i en annan konkret klass. Inuti den statiska klassen beräknar vi summan av två tal och lagrar resultatet i en statisk variabel som ingår i den yttre klassen.
# 5) Slutlig klass
En slutklass är en klass som inte kan ärvas eller delklassas. När en klass väl förklarats slutlig i Java är den en slags konstant och den blir oföränderlig.
Därför måste vi förklara det som slutligt för att göra en klass oföränderlig.
//final class final class Base_Class { void Display() { System.out.println('Base_Class::Display()'); } } //class Derived_Class extends Base_Class { //Compile-time error - can't inherit final class class Derived_Class{ void Display() { System.out.println('Derived_Class::Display()'); } } public class Main { public static void main(String() arg) { Base_Class base_obj = new Base_Class(); //create a final class object base_obj.Display(); Derived_Class deri_obj = new Derived_Class(); deri_obj.Display(); } }
Produktion
Ovanstående program deklarerar först en Base_Class som är märkt 'final'. Därför får vi ett kompileringsfel när vi försöker utöka det i Derived_Class. (Den kommenterade raden). Men vi kan skapa dess objekt och kalla Display-metoden.
# 6) Kapslad klass / inre klass
Kapslad klass, även känd som Inner class i Java används för att förbättra inkapsling. En kapslad klass / inre klass är en klass som är innesluten i en annan klass.
Precis som en klass har variabler och metoder som sina medlemmar, kan den också ha en inre klass som sin medlem.
En kapslad klass har följande struktur:
class OuterClass{ class NestedClass{ //nested class code… } //outerclass code… }
Inre klasser har följande undertyper:
- Kapslad inre klass
- Metod Lokal inre klass
- Anonym inre klass
- Statisk kapslad klass
# 1) Kapslad inre klass
En kapslad inre klass har tillgång till privata medlemsvariabler i en yttre klass. Vi kan också använda åtkomstmodifierare för den kapslade inre klassen.
# 2) Metod Lokal inre klass
Detta är den inre klassen som deklareras i en yttre klassmetod.
# 3) Anonym inre klass
Anonym inre klass är en inre klass som deklareras i en yttre klass och saknar namn.
# 4) Statisk kapslad klass
Så som en klass har en statisk medlemsvariabel kan den också ha en statisk klass som medlem.
Ett exempel på en kapslad / inre klass ges nedan:
public class Main { //nested/inner class enclosed inside Main class. class InnerClass { public void inner_print() { System.out.println('Inner class'); } } public static void main(String() args) { System.out.println('Main in Outer class'); } }
Produktion
Andra specialklasser i Java
Oföranderlig klass i Java
En oföränderlig klass genererar oföränderliga föremål. Ett oföränderligt objekt är ett objekt vars innehåll inte kan ändras när objektet har skapats. Så en oföränderlig klass är den vars objekt inte kan ändras när den har skapats.
Alla omslagsklasser i Java för primitiva typer (heltal, boolean, byte, etc.) är oföränderliga. Strängklassen är också oföränderlig.
Vi kan också ha användardefinierade oföränderliga klasser i Java.
För att en klass ska vara oföränderlig måste den förklaras slutlig tillsammans med alla dess datamedlemmar. Klassen ska också ha en parametrerad konstruktör. Alla medlemsvariabler bör ha en gettermetod men inte en settermetod.
intervjufrågor och svar för databastestning för erfarna
Alla ovanstående krav måste uppfyllas för att en klass ska vara oföränderlig.
Låt oss implementera ett Java-program för att demonstrera den oföränderliga klassen.
final class City { final String city_name; final int cityId; //parameterised constructor public City(String name, int id) { this.city_name = name; this.cityId = id; } //getters for member variables public String getcityName() { return city_name; } public int getcityId() { return cityId; } } // Driver class class Main { public static void main(String args()) { City city = new City('New York', 1001); System.out.print('City Id:' + city.getcityId() + ' '); System.out.println('City Name:' + city.getcityName()); //city.cityId = 1002; //cannot assign a value to final variable regNo } }
Produktion
I ovanstående program har vi förklarat en stadsklass. Detta är en slutklass och i denna klass har vi deklarerat två medlemsvariabler och en parametrerad konstruktör. Vi har också förklarat gettermetoder för dessa två medlemsvariabler. Så City-klassen uppfyller alla kraven i en oföränderlig klass.
Notera den kommenterade kodraden i huvudmetoden. Om vi avmarkerar den här raden får vi ett kompileringsfel (anges i kommentaren här) när vi försöker ställa in värdet för en medlemsvariabel.
Singleton-klass i Java
En singleton-klass tillåter en enda instans i taget. I Java är en singleton ett designmönster. Detta designmönster säkerställer att endast en förekomst av en klass existerar när som helst. Så vilken klass som definieras som en singleton har en enda åtkomstpunkt och den är global.
Observera att uppsägning av programmets livscykel inte förstör en singleton-klass som de normala klasserna. När en klass förklaras som singleton skapar vi inte en ny instans varje gång en ny begäran om objektet görs.
Samma instans används om och om igen. På det här sättet kan vi spara minnesutrymme mestadels vid applikationer med flera trådar och databaser.
Vi kan använda en singleton-klass för aktiviteter som cachning, loggning etc.
Följande program visar en Singleton-klass.
class Singleton { // static variable of type Singleton private static Singleton single_instance = null; // String variable public String str; // private constructor : restricted to this class private Singleton() { str = 'Singleton class::private constructor'; } // create instance of Singleton class using getInstance static method public static Singleton getInstance() { if (single_instance == null) single_instance = new Singleton(); return single_instance; } } class Main { public static void main(String args()) { // instantiate Singleton class with obj1 Singleton obj1 = Singleton.getInstance(); // instantiate Singleton class with obj2 Singleton obj2 = Singleton.getInstance(); System.out.println('obj1(str):' + obj1.str); System.out.println('obj2(str):' + obj2.str); // change variable of instance obj1 obj1.str = (obj1.str).toUpperCase(); System.out.println('
After changing obj1(str):'); System.out.println('obj1(str):' + obj1.str); System.out.println('obj2(str):' + obj2.str); } }
Produktion
I ovanstående program har vi definierat en singleton-klass med en privat konstruktör. Vi har definierat en medlemsvariabel av strängtyp. I huvudmetoden förklarar vi två instanser av singleton-klassen. Sedan ändrar vi strängvariabeln med hjälp av en av instanserna.
När vi skriver ut strängvärdet för båda instanserna märker vi att värdet för strängvariabel har ändrats för båda instanserna. Därför, även om vi bara ändrade värdet för en instans, på grund av singleton-klassen, återspeglas förändringar i alla instanser.
Vi returnerar alltid samma instans även om vi verkar skapa olika instanser.
Objektklass i Java
Objektklassen är moderklassen eller den första klassen i Java. Det är på den översta nivån i Java-hierarkin.
Eftersom alla klasser har Object-klassen som en superklass, implementerar alla Java-objekt inklusive Arrays Object-klassmetoderna. Objektklassen finns i paketet “java.lang”.
Deklaration för java.lang.Object är:
offentlig klass Objekt
Följande tabell beskriver konstruktörerna och metoderna för objektklassen.
Konstruktör / metod | Beskrivning |
---|---|
Klass getClass () | Returnerar objektets runtime-klass. |
Objektklasskonstruktör | |
Objekt() | Objektklasskonstruktör |
Objektklassmetoder | |
skyddad objektklon () | Returnerar en klon eller kopia av objektet. |
booleska lika (Object obj) | Kontrollerar om ett givet objekt är lika med det här objektet. |
skyddad tomrum slutföra () | Kallas av sopuppsamlaren när alla referenser till objektet förstörs. |
int hashCode () | Returnerar hashkod för objektet. |
ogiltigt meddelande () | Använd för att väcka en enda väntråd. |
void notifyAll () | Vaknar upp alla väntande trådar. |
String toString () | Returnerar strängekvivalenten för objektet. |
ogiltig vänta () | Får en tråd att vänta tills den väcks av en annan tråd genom att meddela metoden. |
ogiltig väntan (lång tidsavbrott) | Gör att tråden väntar tills tiden som anges av 'timeout' förflutit eller väcks av notify or notifyAll metoder. |
ogiltig vänta (lång timeout, int nanos) | Får tråden att vänta tills den angivna tiden har gått eller tills notify () eller notifyAll () anropas av en annan tråd. |
Låt oss implementera ett exempel på Java-program som visar några av objektklassmetoderna.
public class Main { public static void main(String() args) { Main t = new Main(); System.out.println('Main class Object HashCode:' + t.hashCode()); t = null; // call garbage collector System.gc(); System.out.println('Main class:End'); } @Override protected void finalize() { System.out.println('Main Class::finalize method called.'); } }
Produktion
Här har vi en huvudklass. I huvudmetoden () skapar vi ett objekt av huvudklassen. Detta objekt är en ättling till Object-klassen och stöder alla Object-klassmetoder. Således använder vi det här objektet och kallar några objektklassmetoder som hashCode (), System.GC (), finalize () etc.
Wrapper-klass i Java
Java tillhandahåller en funktion som kallas omslagsklass som har en mekanism som omvandlar primitiv datatyp till objekt och vice versa. Wrapper-klasser är de klasser som representerar primitiva typer som int, char, etc. som objekt.
Således har varje primitiv datatyp i Java sin motsvarande omslagsklass.
Följande tabell visar de primitiva datatyperna och deras motsvarande omslagsklass.
Primitiv typ | Förpackningstyp |
---|---|
flyta | Flyta |
booleska | Boolean |
röding | Karaktär |
byte | Byte |
kort | Kort |
int | Heltal |
lång | Lång |
dubbel | Dubbel |
För att konvertera primitiverna till objekt och objekt till primitiver har vi tekniker som kallas ”autoboxing” respektive ”boxning”. Ase Java är ett objektorienterat programmeringsspråk, vi hanterar alltid objekt och vi har också många funktioner som samlingar, Serialisering etc. som också behöver objekt och primitiva typer.
Så det är absolut nödvändigt att vi alltid behöver objekt och primitiva typer i Java och därför behöver vi dessa tekniker för autoboxing och unboxing.
Autoboxing
Autoboxing är en teknik för att automatiskt konvertera en primitiv datatyp till ett objekt i motsvarande omslagsklass. Till exempel , omvandling av int till Integer-klass, char till Character-klass, etc. är fall av autoboxing.
Notera: Wrapper-klasser använder metoden valueOf () för att konvertera primitiv till objekt som skrivs av sedan Java 5.
Unboxing
Omvänd konvertering av omslagsklassobjekt till motsvarande primitiva datatyper kallas 'unboxing'.
Notera: Sedan Java 5 skrivs av metoden intValue () som omvandlar omslagsobjektet till en primitiv typ.
Nedan följer ett exempel på boxning / unboxing.
public class Main { public static void main(String args()){ //Convert int to Integer : boxing int num=20; Integer int_class= Integer.valueOf(num);//explicit conversion from int to Integer Integer inum=num;//autoboxing System.out.println('int => Integer: ' + num+' => '+inum); //Convert Integer to int: unboxing Integer val=new Integer (3); int ival=val.intValue();//explicit conversion from Integer to int int jval=val;//unboxing System.out.println('Integer => int:' + val+' => '+jval); } }
Produktion
Ovanstående program visar autoboxing och unboxing på int-värde. Först konverterar vi int till Integer-objekt och sedan konverteras ett Integer-objekt till int-datatypen.
Låt oss implementera ett program som visar de omslagsklasser som finns i Java.
public class Main { public static void main(String args()) { byte bbyte=10; short sshort=20; int iint=300; long llong=400; float ffloat=3.14F; double ddouble=77.2D; char cchar='A'; boolean bboolean=true; //Convert primitives into objects => Autoboxing Byte byteobj=bbyte; Short shortobj=sshort; Integer intobj=iint; Long longobj=llong; Float floatobj=ffloat; Double doubleobj=ddouble; Character charobj=cchar; Boolean boolobj=bboolean; //Print converted objects System.out.println('Primitives converted to Objects:'); System.out.println('Byte object: '+byteobj); System.out.println('Short object: '+shortobj); System.out.println('Integer object: '+intobj); System.out.println('Long object: '+longobj); System.out.println('Float object: '+floatobj); System.out.println('Double object: '+doubleobj); System.out.println('Character object: '+charobj); System.out.println('Boolean object: '+boolobj); //Convert Objects to Primitives => Unboxing byte bytevalue=byteobj; short shortvalue=shortobj; int intvalue=intobj; long longvalue=longobj; float floatvalue=floatobj; double doublevalue=doubleobj; char charvalue=charobj; boolean boolvalue=boolobj; //Print primitives System.out.println('Converting Objects to Primitives'); System.out.println('byte value: '+bytevalue); System.out.println('short value: '+shortvalue); System.out.println('int value: '+intvalue); System.out.println('long value: '+longvalue); System.out.println('float value: '+floatvalue); System.out.println('double value: '+doublevalue); System.out.println('char value: '+charvalue); System.out.println('boolean value: '+boolvalue); } }
Produktion
Ovanstående programutdata visar omvandlingen från primitiva typer till omslagningsobjekt (Autoboxing) och reverserar konvertering från omslagobjekt till primitiva typer (unboxing).
Vanliga frågor
F # 1) Vad är klassdatatypen i Java?
youtube till mp4 converter gratis nedladdning full version
Svar: Java tillhandahåller en klass med namnet 'Klass' som innehåller information om alla klasser, objekt och gränssnitt för det körande programmet. Klassklassen representerar också primitiva datatyper och tomrumstypen.
Klassklassen är en del av paketet java.lang.
F # 2) Vad är den normala klassen i Java?
Svar: En normal klass i Java är en icke-statisk klass. Vi kan skapa objekt av en normal klass med det nya nyckelordet. Alla normala klasser kan också ha en annan klass som medlem. I detta fall kallas medlemsklassen kapslad eller inre klass och den omslutande klassen kallas yttre klass.
F # 3) Är sträng en Wrapper-klass i Java?
Svar: Nej, String är inte en omslagsklass i Java. För att en klass ska vara en omslagsklass behöver vi dess motsvarande primitiva typ. Till exempel, för Integer wrapper-klass har vi primitiv typ int. För strängklassen har vi inte en motsvarande primitiv datatyp.
F # 4) Vad är fördelen med Wrapper Class?
Svar: Wrapper-klasser används för konvertering av primitiva datatyper till objekt. Med andra ord slår omslagsklasser in primitiva typer i objekt. Wrapper-klasser används när vissa Java-funktioner som Samlingar bara förväntar sig objekt och inte primitiva datatyper.
F # 5) Varför används Singleton Class i Java?
Svar: Närhelst vi vill ha en global åtkomstpunkt för ett visst objekt, går vi efter ett singletonmönster som gör att vi kan designa en singletonklass där det bara kommer att finnas en instans. Singleton-klasser används i cachar, trådpooling, databasapplikationer, loggning etc.
Slutsats
I denna handledning har vi täckt de olika klasstyper som används i Java. Vi såg klasserna betong, abstrakt, slutlig, statisk, kapslad, POJO, etc. Bortsett från detta diskuterade vi också Singleton-klasser, Immutable-klasser och diskuterade också deras implementeringsexempel.
Vi täckte också omslagsklasser och objektklasser i Java. Wrapper-klasser är de klasser som omsluter de primitiva datatyperna i Java till objekt. Objektklass i Java är superklassen för alla andra klasser. Det är den översta klassen i Java-hierarkin.
Nu när vi har diskuterat klasserna och objekten i Java och klasstyperna, i nästa handledning fortsätter vi med en detaljerad diskussion om konstruktörer i Java.
=> Kolla in den perfekta Java-träningsguiden här.
Rekommenderad läsning
- Java-gränssnitt och abstrakt klasshandledning med exempel
- Java Basics: Java Syntax, Java Class och Core Java Concepts
- Vad är statisk nyckelord i Java?
- Java-heltal och Java BigInteger-klass med exempel
- Java Scanner-klasshandledning med exempel
- Java Class Vs Object - Hur man använder klass och objekt i Java
- Java Array Class Tutorial - java.util.Arrays Class med exempel
- Vad är Java Vector | Java Vector Class Tutorial med exempel