logo

Vrste razredov v Javi

V Javi je razred je načrt, iz katerega lahko ustvarimo posamezen predmet. Java ponuja a ključna beseda imenovani razred, s katerim lahko deklariramo razred. Znotraj razreda definiramo razred člani in funkcije. Ni mogoče ustvariti Java programi brez razreda. Razred lahko označimo tudi kot a uporabnik definiran Vrste razredov

V Javi obstaja sedem vrst razredov:

    Statični razred Končni razred Abstraktni razred Razred betona Razred Singleton POJO Class Notranji razred
Vrste razredov v Javi

Statični razred

notri Java, static je ključna beseda, ki upravlja objekte v pomnilniku. Statični objekt pripada razredu namesto primerku razreda.

Lahko naredimo razred statična če in samo če je ugnezdeni razred. Lahko tudi rečemo, da so statični razredi znani kot ugnezdeni razredi. To pomeni, da je razred, ki je znotraj drugega razreda deklariran kot statičen, znan kot statični razred. Ugnezdeni statični razred ne zahteva sklicevanja na zunanji razred. Namen statičnega razreda je zagotoviti oris svojega podedovanega razreda.

Lastnosti statičnega razreda so:

  • Razred ima samo statične člane.
  • Ne more dostopati do člana (nestatičnega) zunanjega razreda.
  • Objekta statičnega razreda ne moremo ustvariti.

Razumejmo koncept statičnega razreda skozi program.

StaticClassExample.java

 public class StaticClassExample { private static String str = 'Javatpoint'; //nested class which is a Static class public static class StaticDemo { //non-static method of Static class public void show() { System.out.println(str); } } public static void main(String args[]) { StaticClassExample.StaticDemo obj = new StaticClassExample.StaticDemo(); obj.show(); } } 

Izhod:

 Javatpoint 

V zunanjem razredu zgornjega programa smo deklarirali spremenljivko str kot statično, ker do te spremenljivke dostopamo iz statičnega konteksta. Če to spremenljivko razglasimo kot nestatično, prevajalnik prikaže napako, ker ugnezdeni statični razred ne more dostopati do nestatičnih članov zunanjega razreda.

Druga stvar, ki jo je treba opaziti v zgornjem programu, je, da nam za ustvarjanje objekta ugnezdenega razreda ni treba ustvariti primerka zunanjega razreda. Če ugnezdeni razred ni statični razred, moramo ustvariti primerek zunanjega razreda.

Končni razred

Beseda končno pomeni, da se ne da spremeniti. The dokončno razred v Javi je mogoče deklarirati z uporabo končna ključna beseda . Ko razred razglasimo za končnega, ostanejo vrednosti enake v celotnem programu. Namen zaključnega razreda je narediti razred nespremenljiv kot razred String. To je le način, da naredimo razred nespremenljiv. Ne pozabite, da je zaključnega razreda ni mogoče podaljšati . Tudi preprečuje, da bi bil razred podrazred .

Razumejmo koncept končnega razreda skozi program.

FinalClassExample.java

 //base class declared as final final class A { void printmsg() { System.out.print('Base class method is executed.'); } } //derived class //extending a final class which is not possible //it shows the error cannot inherit final class at compile time class B extends A { void printmsg() { System.out.print('Derived class method is executed.'); } } //main class public class FinalClassExample { public static void main(String[] arg) { B obj = new B(); obj.printmsg(); } } 

Izhod:

 /FinalClassExample.java:11: error: cannot inherit from final A class B extends A 

Abstraktni razred

An abstraktni razred je a, ki je deklariran s ključno besedo povzetek . Razred lahko vsebuje ali ne vsebuje abstraktnih metod. Ne moremo ustvariti primerka abstraktnega razreda, lahko pa je podrazred. Ti razredi so nepopolni, zato bi morali za dokončanje abstraktnega razreda abstraktne razrede razširiti na konkreten razred. Ko podrazred deklariramo kot abstrakten, je potrebno zagotoviti implementacijo abstraktnih metod. Zato mora biti tudi podrazred razglašen za abstrakten. Skrivanje podatkov lahko dosežemo z uporabo abstraktnega razreda. Primer abstraktnega razreda je AbstarctMap razred, ki je del ogrodja zbirk.

Razumejmo koncept abstraktnega razreda skozi program.

AbstractClassExample.java

 //abstract class abstract class MathematicalOperations { int a=30, b=40; //abstract method public abstract void add(); } public class Operation extends MathematicalOperations { //definition of abstract method public void add() { System.out.println('Sum of a and b is: 'a+b); } public static void main(String args[]) { MathematicalOperations obj = new Operation(); obj.add(); } } 

Izhod:

 Sum of a and b is: 70 

Razred betona

To so običajni razredi Java. Izpeljani razred, ki zagotavlja osnovne izvedbe za vse metode, ki še niso implementirane v osnovnem razredu, je znan kot beton razred. Z drugimi besedami, to so običajni razredi Java, v katerih so implementirane vse metode abstraktnega razreda. Neposredno lahko ustvarimo objekt konkretnega razreda. Ne pozabite, da konkretni in abstraktni razred nista enaka. Konkretni razred lahko razširi svoj nadrejeni razred. Uporablja se za posebne zahteve.

Razumejmo koncept konkretnega razreda skozi program.

ConcreteClassExample.java

 //Concrete Class public class ConcreteClassExample { //method of the concreted class static int product(int a, int b) { return a * b; } public static void main(String args[]) { //method calling int p = product(6, 8); System.out.println('Product of a and b is: ' + p); } } 

Izhod:

 Product of a and b is: 48 

Razred Singleton

Razred, ki ima naenkrat le objekt, je znan kot a enojni razred . Kljub temu, če poskušamo drugič ustvariti primerek, ta na novo ustvarjeni primerek kaže na prvi primerek. Če smo naredili kakršno koli spremembo znotraj razreda skozi kateri koli primerek, sprememba vpliva tudi na spremenljivko posameznega primerka. Običajno se uporablja za nadzor dostopa pri povezovanju z bazo podatkov in programiranjem vtičnic. Če želimo ustvariti razred singleton, naredimo naslednje:

  • Ustvari zasebno konstruktor .
  • Ustvarite statično metodo (z uporabo lene inicializacije), ki vrne objekt razreda singleton.

SingletonClassExample.java

java virtualni stroj
 public class Singleton { private String objectState; private static Singleton instance = null; private Singleton() throws Exception { this.objectState = 'Javatpoint'; } public static Singleton getInstance() { if(instance==null) { try { instance=new Singleton(); } catch(Exception e) { e.printStackTrace(); } } return instance; } public String getObjectState() { return objectState; } public void setObjectState(String objectState) { this.objectState = objectState; } } 

Izhod:

 Javatpoint 

POJO Class

V Javi POJO pomeni Navaden stari predmet Java. Razred Java, ki vsebuje samo zasebne spremenljivke, setter in getter, je znan kot POJO razred. Uporablja se za definiranje objektov Java, ki povečajo ponovno uporabnost in berljivost programa Java. Razred zagotavlja enkapsulacijo. Pogosto se uporablja v Javi, ker je te razrede enostavno razumeti. Razred POJO ima naslednje lastnosti:

  • Ne razširja vnaprej določenih razredov, kot so Arrays, HttpServlet itd.
  • Ne more vsebovati vnaprej določenih opomb.
  • Ne more implementirati vnaprej določenega vmesniki .
  • Ni potrebno dodati nobenega konstruktorja.
  • Vse spremenljivke primerka morajo biti zasebne.
  • Dobivalec/nastavljalec metode mora biti javno.

Razumejmo koncept razreda POJO prek programa Java.

PojoClassExample.java

 class PojoDemo { //private variable private double price=89764.34; //getter method public double getPrice() { return price; } //setter method public void setPrice(int price) { this.price = price; } } //main class public class PojoClassExample { public static void main(String args[]) { PojoDemo obj = new PojoDemo(); System.out.println('The price of an article is '+ obj.getPrice()+' Rs.'); } } 

Izhod:

 The price of an article is 89764.34 Rs. 

Notranji razred

Java nam omogoča, da definiramo razred znotraj razreda in takšni razredi so znani kot ugnezdeni razredi . Uporablja se za logično združevanje razredov in doseganje enkapsulacija . Do zunanjih članov razreda (vključno z zasebnimi) lahko dostopate z notranji razred . Splošna sintaksa za deklariranje ugnezdenega razreda je naslednja:

 class OuterClass { //code class NestedClass { //code } } 

Ugnezdeni razredi so dveh vrst:

obravnavanje izjem v Javi

1. Statični ugnezdeni razred: Razred, ki je statična in ugnezdeni se imenuje statični ugnezdeni razred. Interakcija je s članom instance svojega zunanjega razreda. Objekt statičnega ugnezdenega razreda lahko ustvarimo z naslednjo sintakso:

 OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass(); 

2. Nestatični ugnezdeni razred: Pokličejo se nestatični ugnezdeni razredi notranji razredi .

Splošna sintaksa za deklaracijo statičnega ugnezdenega razreda in notranjega razreda je naslednja:

 class OuterClass { ... static class StaticNestedClass { ... } class InnerClass { ... } } 

Razumejmo koncept notranjega razreda skozi program Java.

InnerClassExample.java

 public class InnerClassExample { public static void main(String[] args) { System.out.println('This is outer class.'); } class InnerClass { public void printinner() { System.out.println('This is inner class.'); } } } 

Vrste notranjih razredov

Java ponuja dve vrsti notranjih razredov, kot sledi:

Lokalni notranji razred

Je vrsta notranjega razreda, ki je definiran znotraj bloka. Tukaj blok označuje telo metode (skupino stavkov, zaprtih med oklepajema). Zaradi definiranja znotraj bloka je znan tudi kot lokalni notranji razred metode. To so nestatični razredi, ker lahko dostopajo do članov instance bloka. Lokalne notranje razrede lahko definiramo v telesu metode. Ti razredi morajo biti instancirani v bloku, v katerem so definirani.

Ko prevedemo program Java (program, ki vsebuje notranji razred), prevajalnik ustvari dve datoteki razreda, in sicer Zunanji.razred in ZunanjiNotranji.razred. Eden za zunanji razred in drugi za notranji razred, ki vsebuje referenco na zunanji razred.

Razumejmo koncept lokalnega notranjega razreda prek programa Java.

OuterClass.java

 public class OuterClass { private void getValue() { //if you are using Java 7 make the variable final //if you are using Java 8 the code runs successfully int sum = 20; //declaring method local inner class class InnerClass { public int divisor; public int remainder; public InnerClass() { divisor = 4; remainder = sum%divisor; } private int getDivisor() { return divisor; } private int getRemainder() { return sum%divisor; } private int getQuotient() { System.out.println('We are inside the inner class'); return sum / divisor; } } //creating an instance of inner class InnerClass ic = new InnerClass(); System.out.println('Divisor = '+ ic.getDivisor()); System.out.println('Remainder = ' + ic.getRemainder()); System.out.println('Quotient = ' + ic.getQuotient()); } public static void main(String[] args) { //creating an instance of outer class OuterClass oc = new OuterClass(); oc.getValue(); } } 

Izhod:

 Divisor = 4 Remainder = 0 We are inside the inner class Quotient = 5 

Anonimni notranji razred

To je vrsta notranjega razreda, ki je enak lokalnim razredom, vendar je edina razlika v tem, da razred nima imena razreda in je iz razreda ustvarjen en sam predmet. Zaradi tega je koda bolj jedrnata. Uporablja se, če želimo enkrat uporabiti lokalni razred. Anonimne razrede lahko ustvarimo na dva načina:

  • Z uporabo vmesnika
  • Z razglasitvijo konkretnega in abstraktnega razreda

Sintaksa:

 // the class may an interface, abstract or concrete class DemoClass obj = new DemoClass() { //methods //data members public void demomethod() { //statements } }; 

Če pogledamo zgornjo sintakso, vidimo, da je enaka kot priklic konstruktorja, le da ima razred definicijo v bloku.

AnonymousClassExample.java

 interface Score { int run = 321; void getScore(); } public class AnonymousClassExample { public static void main(String[] args) { // Myclass is hidden inner class of Score interface // whose name is not written but an object to it // is created. Score s = new Score() { @Override public void getScore() { //prints score System.out.print('Score is '+run); } }; s.getScore(); } } 

Izhod:

 Score is 321 

Java ponuja tudi drugo vrsto razreda Java, ki je znan kot ovojni razred. Pogovorimo se o tem podrobno.

Ovojni razred

V Javi je izraz ovojni razred predstavlja zbirko razredov Java, ki objektivizirajo primitivni tip Jave. To pomeni, da za vsak primitivni tip obstaja ustrezen ovojni razred. Ovojni razredi se uporabljajo za pretvorbo iz primitivnega tipa v objekt in obratno. Naslednja slika prikazuje hierarhijo razredov ovoja.

Vrste razredov v Javi

Naslednja tabela predstavlja primitivni tip in ustrezen razred ovoja.

Primitivni tip Ovojni razred
logično Boolean
int Celo število
char Znak
dvojno Dvojno
lebdi Lebdi
dolga dolga
bajt Bajt
kratek Kratek

Razumejmo razred ovoja prek programa Java.

WrapperClassExample.java

 public class WrapperClassExample { public static void main(String args[]) { byte x = 0; //wrapping byte primitive type into Byte object Byte byteobj = new Byte(x); int y = 23; //wrapping int primitive type into Integer object Integer intobj = new Integer(y); char c='m'; //wrapping char primitive type into Character object Character charobj=c; //printing values from objects System.out.println('Byte object byteobj: ' + byteobj); System.out.println('Integer object intobj: ' + intobj); System.out.println('Character object charobj: ' + charobj); } } 

Izhod:

 Byte object byteobj: 0 Integer object intobj: 23 Character object charobj: m