logo

A Java osztályok típusai

Java nyelven a osztály egy tervrajz, amelyből egyedi objektumot hozhatunk létre. A Java biztosít a kulcsszó nevű osztályt, amellyel deklarálhatunk egy osztályt. Az osztályon belül meghatározzuk osztály tagjai és funkciói. Létrehozni nem lehet Java programok osztály nélkül. Egy osztályt a.-nak is nevezhetünk felhasználó által meghatározott Az osztályok típusai

A Java-ban hétféle osztály létezik:

    Statikus osztály Végső osztály Absztrakt osztály Beton osztály Singleton osztály POJO osztály Belső osztály
A Java osztályok típusai

Statikus osztály

Ban ben A Java , static egy kulcsszó, amely a memóriában lévő objektumokat kezeli. A statikus objektum az osztályhoz tartozik az osztály példánya helyett.

Csinálhatunk egy osztályt statikus akkor és csak akkor, ha beágyazott osztályról van szó. Azt is mondhatjuk, hogy a statikus osztályokat beágyazott osztályoknak nevezzük. Ez azt jelenti, hogy egy másik osztályon belül statikusnak deklarált osztályt statikus osztálynak nevezzük. A beágyazott statikus osztály nem igényel hivatkozást a külső osztályra. A statikus osztály célja, hogy felvázolja az öröklött osztályát.

A statikus osztály tulajdonságai a következők:

  • Az osztálynak csak statikus tagjai vannak.
  • Nem férhet hozzá a külső osztály (nem statikus) tagjához.
  • Nem hozhatunk létre statikus osztály objektumot.

Értsük meg a statikus osztály fogalmát egy programon keresztül.

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(); } } 

Kimenet:

 Javatpoint 

A fenti program külső osztályában deklaráltunk egy változót str statikusnak, mert ehhez a változóhoz statikus kontextusból férünk hozzá. Ha ezt a változót nem statikusnak deklaráljuk, a fordító hibát jelez, mert beágyazott statikus osztály nem férhet hozzá a külső osztály nem statikus tagjaihoz.

A második dolog, amit a fenti programban észre kell venni, hogy a beágyazott osztály objektumának létrehozásához nem kell létrehoznunk a külső osztály példányát. Ha a beágyazott osztály nem statikus osztály, akkor létre kell hoznunk a külső osztály példányát.

java karakterláncok

Végső osztály

A végleges szó azt jelenti, hogy nem lehet megváltoztatni. A végső osztály a Java-ban deklarálható a végső kulcsszó . Miután véglegesnek nyilvánítottunk egy osztályt, az értékek ugyanazok maradnak a program során. A záró óra célja az óra elkészítése változhatatlan mint a String osztály. Ez csak egy módja annak, hogy az osztályt megváltoztathatatlanná tegyük. Ne feledje, hogy a utolsó óra nem hosszabbítható meg . Az is megakadályozza az osztály alosztályozását .

Értsük meg a végső osztály fogalmát egy programon keresztül.

FinalClassExample.java

jdbc
 //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(); } } 

Kimenet:

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

Absztrakt osztály

An absztrakt osztály ez a kulcsszóval deklarált absztrakt . Az osztály tartalmazhat absztrakt metódusokat vagy nem. Nem hozhatunk létre egy absztrakt osztály példányát, de lehet alosztály. Ezek az osztályok hiányosak, ezért az absztrakt osztály befejezéséhez ki kell terjesztenünk az absztrakt osztályokat egy konkrét osztályra. Amikor egy alosztályt absztraktnak deklarálunk, akkor absztrakt módszerek megvalósítását kell biztosítani. Ezért az alosztályt is absztraktnak kell nyilvánítani. Az adatok elrejtését az absztrakt osztály használatával érhetjük el. Példa az absztrakt osztályra Absztrakttérkép osztály, amely a Collections keretrendszer része.

Értsük meg az absztrakt osztály fogalmát egy programon keresztül.

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(); } } 

Kimenet:

 Sum of a and b is: 70 

Beton osztály

Ezek a szokásos Java osztályok. A származtatott osztályt, amely biztosítja az alapvető megvalósításokat az összes olyan metódushoz, amely még nincs implementálva az alaposztályban, úgynevezett Konkrét osztály. Más szóval, ezek a szokásos Java osztályok, amelyekben egy absztrakt osztály összes metódusa megvalósul. A konkrét osztály objektumát közvetlenül is létrehozhatjuk. Ne feledje, hogy a konkrét osztály és az absztrakt osztály nem ugyanaz. Egy konkrét osztály kiterjesztheti szülőosztályát. Speciális követelményekhez használják.

Értsük meg a konkrét osztály fogalmát egy programon keresztül.

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); } } 

Kimenet:

 Product of a and b is: 48 

Singleton osztály

Azokat az osztályokat, amelyeknek egyszerre csak egy objektuma van, a singleton osztály . Mégis, ha másodszor is megpróbálunk létrehozni egy példányt, az újonnan létrehozott példány az első példányra mutat. Ha az osztályon belül bármilyen példányon keresztül változtatást hajtottunk végre, a módosítás az egyedi példány változóját is érinti. Általában a hozzáférés szabályozására használják az adatbázis-kapcsolat és a socket programozás során. Ha egyszemélyes osztályt szeretnénk létrehozni, tegyük a következőket:

  • Hozzon létre privátot konstruktőr .
  • Hozzon létre egy statikus metódust (a lusta inicializálással), amely visszaadja a singleton osztály objektumát.

SingletonClassExample.java

 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; } } 

Kimenet:

 Javatpoint 

POJO osztály

Java nyelven a POJO jelentése Sima régi Java objektum. Az olyan Java osztály, amely csak privát változókat, settert és gettert tartalmaz, az úgynevezett POJO osztály. Java objektumok meghatározására szolgál, amelyek növelik a Java programok újrafelhasználhatóságát és olvashatóságát. Az osztály kapszulázást biztosít. Széles körben használják a Java-ban, mert könnyű megérteni ezeket az osztályokat. A POJO osztály a következő tulajdonságokkal rendelkezik:

  • Nem terjeszti ki az előre meghatározott osztályokat, mint például a tömbök, a HttpServlet stb.
  • Nem tartalmazhat előre meghatározott megjegyzéseket.
  • Előre meghatározott módon nem tudja megvalósítani interfészek .
  • Nem szükséges hozzá semmilyen konstruktor.
  • Minden példányváltozónak privátnak kell lennie.
  • A getter/setter mód nyilvánosnak kell lennie.

Ismerjük meg a POJO osztály fogalmát egy Java programon keresztül.

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.'); } } 

Kimenet:

char-ból integer java
 The price of an article is 89764.34 Rs. 

Belső osztály

A Java lehetővé teszi, hogy osztályt definiáljunk egy osztályon belül, és az ilyen osztályokat úgy ismerjük, mint beágyazott osztályok . Az osztályok logikai csoportosítására és elérésére szolgál Egységbezárás . A külső osztály tagjait (beleértve a privátot is) a belső osztály . A beágyazott osztály deklarálásának általános szintaxisa a következő:

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

A beágyazott osztályoknak két típusa van:

1. Statikus beágyazott osztály: Ez egy osztály statikus és beágyazott statikus beágyazott osztálynak nevezzük. Kölcsönhatásba lép a külső osztályának példánytagjával. A statikus beágyazott osztály objektumát a következő szintaxis használatával hozhatjuk létre:

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

2. Nem statikus beágyazott osztály: A nem statikus beágyazott osztályokat hívják belső osztályok .

A statikus beágyazott osztály és a belső osztály deklarálásának általános szintaxisa a következő:

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

Értsük meg a belső osztály fogalmát egy Java programon keresztül.

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.'); } } } 

A belső osztályok típusai

A Java kétféle belső osztályt biztosít:

kat timpf nettó értéke

Helyi belső osztály

Ez egyfajta belső osztály, amely egy blokkon belül van definiálva. Itt a blokk egy metódustörzset jelöl (egy kapcsos zárójelek közé zárt utasítások csoportja). A blokkon belüli meghatározása miatt metódus lokális belső osztályként is ismert. Ezek a nem statikus osztályok, mert hozzáférhetnek a blokk példány tagjaihoz. Egy metódus törzsében meghatározhatjuk a lokális belső osztályokat. Ezeket az osztályokat abban a blokkban kell példányosítani, amelyben meghatározásra kerültek.

Amikor lefordítunk egy Java programot (egy belső osztályt tartalmazó programot), a fordító előállítja a két osztályfájlt, nevezetesen Külső.osztály és Outer Inner.class. Az egyik a külső osztályhoz, a másik pedig a belső osztályhoz, amely a külső osztályra utal.

Ismerjük meg a helyi belső osztály fogalmát egy Java programon keresztül.

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(); } } 

Kimenet:

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

Névtelen belső osztály

Ez egy olyan típusú belső osztály, amely megegyezik a helyi osztályokkal, de az egyetlen különbség az, hogy az osztálynak nincs osztályneve, és egyetlen objektum jön létre az osztályból. Ez tömörebbé teszi a kódot. Akkor használjuk, ha egyszer szeretnénk használni a helyi osztályt. Névtelen osztályokat a következő két módon hozhatunk létre:

  • Interfész használatával
  • Az osztály konkrétnak és elvontnak nyilvánításával

Szintaxis:

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

A fenti szintaxist tekintve azt látjuk, hogy az megegyezik a konstruktor meghívásával, kivéve, hogy az osztálynak van egy definíciója a blokkban.

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(); } } 

Kimenet:

java logikai karakterlánc
 Score is 321 

A Java egy másik típusú Java osztályt is biztosít, amely wrapper osztályként ismert. Beszéljük meg részletesen.

Csomagoló osztály

Java nyelven a kifejezés burkoló osztály Java osztályok gyűjteményét képviseli, amelyek tárgyiasítják a Java primitív típusát. Ez azt jelenti, hogy minden primitív típushoz tartozik egy megfelelő burkoló osztály. A burkoló osztályok a primitív típusból objektummá és fordítva történő átalakítás végrehajtására szolgálnak. A következő ábra a wrapper osztály hierarchiáját mutatja be.

A Java osztályok típusai

A következő táblázat a primitív típust és a megfelelő burkolóosztályt mutatja be.

Primitív típus Csomagoló osztály
logikai érték Boolean
int Egész szám
char karakter
kettős Kettős
úszó Úszó
hosszú Hosszú
byte Byte
rövid Rövid

Értsük meg a wrapper osztályt egy Java programon keresztül.

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); } } 

Kimenet:

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