logo

„Java“ klasių tipai

Java programoje klasė yra planas, iš kurio galime sukurti atskirą objektą. „Java“ suteikia a raktažodį pavadinta klasė, pagal kurią galime deklaruoti klasę. Klasės viduje mes apibrėžiame klasė nariai ir funkcijos. Neįmanoma kurti Java programos be klasės. Taip pat klasę galime vadinti a vartotojo apibrėžtas Klasių tipai

„Java“ yra septynių tipų klasės:

    Statinė klasė Galutinė klasė Abstrakti klasė Betono klasė Singleton klasė POJO klasė Vidinė klasė
„Java“ klasių tipai

Statinė klasė

Į Java , static yra raktinis žodis, valdantis objektus atmintyje. Statinis objektas priklauso klasei, o ne klasės egzemplioriui.

Galime sudaryti klasę statinis jei ir tik tai yra įdėta klasė. Taip pat galime pasakyti, kad statinės klasės yra žinomos kaip įdėtosios klasės. Tai reiškia, kad klasė, kuri kitoje klasėje paskelbta kaip statinė, yra žinoma kaip statinė klasė. Įdėta statinė klasė nereikalauja nuorodos į išorinę klasę. Statinės klasės tikslas yra pateikti jos paveldėtos klasės metmenis.

Statinės klasės savybės yra šios:

  • Klasėje yra tik statiški nariai.
  • Jis negali pasiekti išorinės klasės nario (nestatinio).
  • Negalime sukurti statinės klasės objekto.

Supraskime statinės klasės sąvoką per 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(); } } 

Išvestis:

 Javatpoint 

Aukščiau pateiktos programos išorinėje klasėje paskelbėme kintamąjį g kaip statinis, nes tą kintamąjį pasiekiame iš statinio konteksto. Jei paskelbsime tą kintamąjį kaip nestatinį, kompiliatorius parodys klaidą, nes įdėta statinė klasė negali pasiekti nestatinių išorinės klasės narių.

Antras dalykas, kurį reikia pastebėti aukščiau pateiktoje programoje, yra tai, kad norint sukurti įdėtos klasės objektą, nereikia kurti išorinės klasės egzemplioriaus. Jei įdėta klasė nėra statinė klasė, turime sukurti išorinės klasės egzempliorių.

Galutinė klasė

Žodis galutinis reiškia, kad jo negalima pakeisti. The galutinis „Java“ klasę galima deklaruoti naudojant galutinis raktinis žodis . Kai paskelbiame klasę kaip galutinę, reikšmės išlieka tos pačios visoje programoje. Baigiamosios klasės tikslas – padaryti klasę nekintamas kaip styginių klasė. Tai tik būdas padaryti klasę nekintamą. Atminkite, kad baigiamoji klasė negali būti pratęsta . Taip pat neleidžia klasei priskirti poklasių .

Supraskime galutinės klasės sąvoką per 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(); } } 

Išvestis:

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

Abstrakti klasė

An abstrakti klasė yra a, kuri deklaruojama naudojant raktinį žodį abstrakčiai . Klasėje gali būti arba nebūti abstrakčių metodų. Negalime sukurti abstrakčios klasės egzemplioriaus, bet tai gali būti poklasis. Šios klasės yra neišsamios, todėl norėdami užbaigti abstrakčiąją klasę, turėtume išplėsti abstrakčias klases iki konkrečios klasės. Kai paskelbiame poklasį kaip abstrakčią, būtina numatyti abstrakčių metodų įgyvendinimą. Todėl poklasis taip pat turi būti paskelbtas abstrakčiu. Duomenų slėpimą galime pasiekti naudodami abstrakčią klasę. Abstrakčios klasės pavyzdys yra Abstraktus žemėlapis klasė, kuri yra kolekcijų sistemos dalis.

Supraskime abstrakčios klasės sąvoką per 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(); } } 

Išvestis:

 Sum of a and b is: 70 

Betono klasė

Tai įprastos „Java“ klasės. Išvestinė klasė, teikianti pagrindinius visų metodų, kurie dar neįdiegti pagrindinėje klasėje, įgyvendinimą, yra žinoma kaip betono klasė. Kitaip tariant, tai įprastos „Java“ klasės, kuriose realizuojami visi abstrakčios klasės metodai. Betono klasės objektą galime sukurti tiesiogiai. Atminkite, kad konkrečios klasės ir abstrakčios klasės nėra tas pats. Konkreti klasė gali išplėsti savo pirminę klasę. Jis naudojamas specifiniams reikalavimams.

Supraskime konkrečios klasės sąvoką per programą.

ipconfig, skirta ubuntu

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

Išvestis:

 Product of a and b is: 48 

Singleton klasė

Klasė, kuri vienu metu turi tik objektą, yra žinoma kaip a viengungio klasė . Vis dėlto, jei bandome sukurti egzempliorių antrą kartą, tas naujai sukurtas egzempliorius nurodo pirmąjį atvejį. Jei atlikome bet kokį pakeitimą klasės viduje per bet kurį egzempliorių, modifikacija taip pat paveiks vieno egzemplioriaus kintamąjį. Paprastai jis naudojamas prieigai valdyti, kai reikia prisijungti prie duomenų bazės ir programuoti lizdą. Jei norime sukurti vienos klasės klasę, atlikite šiuos veiksmus:

  • Sukurti privatų konstruktorius .
  • Sukurkite statinį metodą (naudodami tingų inicijavimą), kuris grąžina viengubo klasės objektą.

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

Išvestis:

 Javatpoint 

POJO klasė

Java kalboje POJO reiškia Paprastas senas Java objektas. „Java“ klasė, kurioje yra tik privatūs kintamieji, seteris ir geteris, yra žinoma kaip POJO klasė. Jis naudojamas „Java“ objektams, kurie padidina „Java“ programos pakartotinį naudojimą ir skaitomumą, apibrėžti. Klasė suteikia kapsuliavimą. Jis plačiai naudojamas Java, nes lengva suprasti šias klases. POJO klasė turi šias savybes:

  • Tai nepratęsia iš anksto nustatytų klasių, tokių kaip „Arrays“, „HttpServlet“ ir kt.
  • Jame negali būti iš anksto nustatytų komentarų.
  • Jis negali įgyvendinti iš anksto nustatytų sąsajos .
  • Nebūtina pridėti jokio konstruktoriaus.
  • Visi egzempliorių kintamieji turi būti privatūs.
  • Geteris / seteris metodus turi būti viešas.

Supraskime POJO klasės sąvoką per 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.'); } } 

Išvestis:

 The price of an article is 89764.34 Rs. 

Vidinė klasė

Java leidžia mums apibrėžti klasę klasėje ir tokios klasės yra žinomos kaip įdėtos klasės . Jis naudojamas klasėms logiškai grupuoti ir pasiekti inkapsuliavimas . Išorinės klasės nariai (įskaitant privačius) gali būti pasiekiami naudojant vidinė klasė . Bendra įdėtos klasės deklaravimo sintaksė yra tokia:

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

Įdėtos klasės yra dviejų tipų:

1. Statinė įdėta klasė: Tokia klasė statinis ir įdėtas vadinama statine įdėta klase . Jis sąveikauja su savo išorinės klasės egzemplioriaus nariu. Statinės įdėtos klasės objektą galime sukurti naudodami šią sintaksę:

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

2. Nestatinė įdėta klasė: Nestatinės įdėtos klasės vadinamos vidines klases .

Bendra statinės įdėtos klasės ir vidinės klasės deklaravimo sintaksė yra tokia:

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

Supraskime vidinės klasės sąvoką per 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.'); } } } 

Vidinių klasių tipai

„Java“ siūlo dviejų tipų vidines klases:

Vietinė vidinė klasė

Tai yra vidinės klasės tipas, kuris yra apibrėžtas bloko viduje. Čia blokas žymi metodo korpusą (teiginių grupę, įterptą tarp skliaustų poros). Dėl apibrėžimo bloko viduje jis taip pat žinomas kaip metodo vietinė vidinė klasė. Tai yra nestatinės klasės, nes jos gali pasiekti bloko egzempliorių narius. Vietines vidines klases galime apibrėžti metodo turinyje. Šios klasės turi būti pavaizduotos bloke, kuriame jos apibrėžtos.

Kai kompiliuojame Java programą (programą, kurioje yra vidinė klasė), kompiliatorius sugeneruoja du klasės failus būtent Išorinė.klasė ir Outer Inner.class. Vienas skirtas išorinei klasei, o kitas vidinei klasei, kurioje yra nuoroda į išorinę klasę.

Supraskime vietinės vidinės klasės sąvoką per Java programą.

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

Išvestis:

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

Anoniminė vidinė klasė

Tai yra vidinės klasės tipas, kuris yra toks pat kaip vietinės klasės, tačiau vienintelis skirtumas yra tas, kad klasė neturi klasės pavadinimo ir iš klasės sukuriamas vienas objektas. Tai daro kodą glaustesnį. Jis naudojamas, jei norime vieną kartą naudoti vietinę klasę. Anonimines klases galime sukurti dviem būdais:

  • Naudojant sąsają
  • Skelbiant klasę konkrečia ir abstrakčia

Sintaksė:

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

Žvelgdami į aukščiau pateiktą sintaksę matome, kad ji yra tokia pati kaip konstruktoriaus iškvietimas, išskyrus tai, kad klasė turi bloke esantį apibrėžimą.

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

Išvestis:

 Score is 321 

„Java“ taip pat teikia kitą „Java“ klasės tipą, vadinamą įvyniojimo klase. Aptarkime tai išsamiai.

Įvyniojimo klasė

Java terminas vyniojimo klasė yra Java klasių rinkinys, objektyvizuojantis primityvųjį Java tipą. Tai reiškia, kad kiekvienam primityviam tipui yra atitinkama įvyniojimo klasė. Įvyniojimo klasės naudojamos konvertuoti iš primityvaus tipo į objektą ir atvirkščiai. Toliau pateiktame paveikslėlyje parodyta įvyniojimo klasės hierarchija.

„Java“ klasių tipai

Šioje lentelėje pateikiamas primityvus tipas ir atitinkama įvyniojimo klasė.

Primityvus tipas Įvyniojimo klasė
loginis Būlio
tarpt Sveikasis skaičius
char Charakteris
dvigubai Dvigubas
plūdė Plūdė
ilgai Ilgai
baitas baitas
trumpas Trumpas

Supraskime įvyniojimo klasę per 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); } } 

Išvestis:

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