logo

Vrste klasa u Javi

U Javi, razreda je nacrt iz kojeg možemo stvoriti pojedinačni objekt. Java pruža a ključna riječ imenovana klasa pomoću koje možemo deklarirati klasu. Unutar klase definiramo razreda članova i funkcija. Nije moguće stvoriti Java programi bez klase. Klasu također možemo referirati kao a korisnik definiran Vrste klasa

U Javi postoji sedam vrsta klasa:

    Statička klasa Završni razred Apstraktni razred Klasa betona Razred samac POJO Klasa Unutarnja klasa
Vrste klasa u Javi

Statička klasa

U Java, static je ključna riječ koja upravlja objektima u memoriji. Statički objekt pripada klasi umjesto instanci klase.

Možemo napraviti razred statički ako i samo ako je to ugniježđena klasa. Također možemo reći da su statične klase poznate kao ugniježđene klase. To znači da je klasa koja je deklarirana kao statična unutar druge klase poznata kao statična klasa. Ugniježđena statička klasa ne zahtijeva referencu na vanjsku klasu. Svrha statičke klase je pružiti pregled svoje naslijeđene klase.

Svojstva statičke klase su:

  • Klasa ima samo statične članove.
  • Ne može pristupiti članu (nestatičnom) vanjske klase.
  • Ne možemo kreirati objekt statičke klase.

Razumimo koncept statičke klase kroz 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(); } } 

Izlaz:

 Javatpoint 

U vanjskoj klasi gornjeg programa deklarirali smo varijablu str kao statički jer toj varijabli pristupamo iz statičkog konteksta. Ako deklariramo tu varijablu kao nestatičku, prevodilac prikazuje pogrešku jer ugniježđena statička klasa ne može pristupiti nestatičkim članovima vanjske klase.

Druga stvar koju treba primijetiti u gornjem programu je da za kreiranje objekta ugniježđene klase ne moramo kreirati instancu vanjske klase. Ako ugniježđena klasa nije statična klasa, moramo stvoriti instancu vanjske klase.

Završni razred

Riječ konačni znači da se ne može promijeniti. The konačni klasa u Javi može se deklarirati pomoću konačna ključna riječ . Jednom kada klasu proglasimo konačnom, vrijednosti ostaju iste tijekom cijelog programa. Svrha završnog razreda je napraviti razred nepromjenjiv poput klase String. To je samo način da se klasa učini nepromjenjivom. Upamtite da je završni razred se ne može produžiti . Također sprječava da klasa bude podklasa .

Razumimo koncept završnog razreda kroz 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(); } } 

Izlaz:

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

Apstraktni razred

An apstraktna klasa je a koji je deklariran ključnom riječi sažetak . Klasa može ali ne mora sadržavati apstraktne metode. Ne možemo stvoriti instancu apstraktne klase, ali ona može biti podklasa. Ove klase su nepotpune, pa da bismo dovršili apstraktnu klasu, trebamo proširiti apstraktne klase na konkretnu klasu. Kada podklasu deklariramo kao apstraktnu tada je potrebno osigurati implementaciju apstraktnih metoda. Stoga se podklasa također mora deklarirati kao apstraktna. Sakrivanje podataka možemo postići korištenjem apstraktne klase. Primjer apstraktne klase je AbstarctMap klasa koja je dio okvira Zbirke.

Razumimo koncept apstraktne klase kroz 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(); } } 

Izlaz:

 Sum of a and b is: 70 

Klasa betona

Ovo su obične Java klase. Izvedena klasa koja pruža osnovne implementacije za sve metode koje još nisu implementirane u osnovnoj klasi poznata je kao betonski razreda. Drugim riječima, to su regularne Java klase u kojima su implementirane sve metode apstraktne klase. Možemo izravno kreirati objekt konkretne klase. Zapamtite da konkretna klasa i apstraktna klasa nisu iste. Konkretna klasa može proširiti svoju roditeljsku klasu. Koristi se za posebne zahtjeve.

Razumimo koncept konkretne klase kroz 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); } } 

Izlaz:

 Product of a and b is: 48 

Razred samac

Klasa koja u jednom trenutku ima samo objekt poznata je kao a jednostruka klasa . Ipak, ako pokušavamo stvoriti instancu drugi put, ta novostvorena instanca ukazuje na prvu instancu. Ako smo napravili bilo kakvu promjenu unutar klase kroz bilo koju instancu, izmjena također utječe na varijablu pojedinačne instance. Obično se koristi za kontrolu pristupa dok se bavi vezom s bazom podataka i programiranjem utičnica. Ako želimo stvoriti singleton klasu, učinimo sljedeće:

  • Stvorite privatni konstruktor .
  • Stvorite statičku metodu (upotrebom lijene inicijalizacije) koja vraća objekt klase singleton.

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

Izlaz:

linux run naredba
 Javatpoint 

POJO Klasa

U Javi POJO označava Običan stari Java objekt. Java klasa koja sadrži samo privatne varijable, postavljač i dobivač poznata je kao POJO razreda. Koristi se za definiranje Java objekata koji povećavaju mogućnost ponovne upotrebe i čitljivost Java programa. Klasa osigurava enkapsulaciju. Široko se koristi u Javi jer je lako razumjeti te klase. POJO klasa ima sljedeća svojstva:

  • Ne proširuje unaprijed definirane klase kao što su Arrays, HttpServlet itd.
  • Ne može sadržavati unaprijed određene zabilješke.
  • Ne može implementirati unaprijed definirano sučelja .
  • Nije potrebno dodati nikakav konstruktor.
  • Sve varijable instance moraju biti privatne.
  • Dobivač/postavljač metode mora biti javno.

Razumimo koncept POJO klase kroz Java program.

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

Izlaz:

 The price of an article is 89764.34 Rs. 

Unutarnja klasa

Java nam omogućuje da definiramo klasu unutar klase, a takve klase su poznate kao ugniježđene klase . Koristi se za logično grupiranje klasa i postizanje enkapsulacija . Članovima vanjske klase (uključujući privatne) može se pristupiti putem unutarnja klasa . Opća sintaksa za deklariranje ugniježđene klase je sljedeća:

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

Ugniježđene klase su dvije vrste:

1. Statička ugniježđena klasa: Klasa koja je statički i ugniježđeni naziva se statična ugniježđena klasa. Interakcija je s članom instance svoje vanjske klase. Možemo stvoriti objekt statičke ugniježđene klase korištenjem sljedeće sintakse:

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

2. Nestatična ugniježđena klasa: Nestatične ugniježđene klase nazivaju se unutarnje klase .

arraylist sortirana java

Opća sintaksa za deklariranje statičke ugniježđene klase i unutarnje klase je sljedeća:

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

Razumimo koncept unutarnje klase kroz Java program.

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 unutarnjih klasa

Java nudi dvije vrste unutarnjih klasa koje su sljedeće:

Lokalna unutarnja klasa

To je vrsta unutarnje klase koja je definirana unutar bloka. Ovdje blok označava tijelo metode (skupina iskaza omeđenih parom zagrada). Zbog definiranja unutar bloka također je poznata kao lokalna unutarnja klasa metode. Ovo su nestatičke klase jer mogu pristupiti članovima instance bloka. Možemo definirati lokalne unutarnje klase u tijelu metode. Ove klase moraju biti instancirane u bloku u kojem su definirane.

Kada kompajliramo Java program (program koji sadrži unutarnju klasu), kompajler generira dvije datoteke klase, naime Vanjski.razred i VanjskiUnutarnji.klasa. Jedan za vanjsku klasu, a drugi za unutarnju klasu koja sadrži referencu na vanjsku klasu.

Razumimo koncept lokalne unutarnje klase kroz Java program.

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

Izlaz:

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

Anonimna unutarnja klasa

To je vrsta unutarnje klase koja je ista kao i lokalne klase, ali jedina razlika je u tome što klasa nema naziv klase i jedan je objekt stvoren od klase. To kod čini sažetijim. Koristi se ako želimo jednom koristiti lokalnu klasu. Anonimne razrede možemo kreirati na sljedeća dva načina:

  • Korištenjem sučelja
  • Proglašavanjem klase konkretnom i apstraktnom

Sintaksa:

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

Gledajući gornju sintaksu, vidimo da je ista kao i pozivanje konstruktora osim što klasa ima definiciju sadržanu u 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(); } } 

Izlaz:

 Score is 321 

Java također nudi drugu vrstu Java klase poznatu kao klasa omotača. Raspravljajmo o tome detaljno.

Klasa omotača

U Javi, termin klasa omotača predstavlja kolekciju Java klasa koje objektiviziraju primitivni tip Jave. To znači da za svaki primitivni tip postoji odgovarajuća klasa omotača. Klase omotača koriste se za pretvorbu iz primitivnog tipa u objekt i obrnuto. Sljedeća slika prikazuje hijerarhiju klase omotača.

Vrste klasa u Javi

Sljedeća tablica predstavlja primitivni tip i odgovarajuću klasu omotača.

Primitivni tip Klasa omotača
Booleov Booleov
int Cijeli broj
char Lik
dvostruko Dvostruko
plutati Plutati
dugo dugo
bajt Bajt
kratak Kratak

Hajdemo razumjeti klasu omotača kroz Java program.

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

Izlaz:

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