private abstract array
Ovaj tutorial raspravljat će o posebnim konstruktorima kao što su Privatni konstruktor na Javi, Sažetak, Niz, Niz, Sučelje i Destruktor na Javi:
U našem zadnjem uputstvu o konstruktorima na Javi naučili smo važne koncepte povezane s konstruktorima u Javi. Razgovarali smo o tome kako stvoriti konstruktor i pravilima za definiranje konstruktora, zajedno s vrstama konstruktora itd.
Također smo naučili preopterećenje konstruktora i ulančavanje konstruktora. Sada, razgovarajmo o određenim posebnim konstruktorima poput privatnog konstruktora, apstraktnog konstruktora i konstruktora niza i niza u Javi. Zatim ćemo razgovarati o destruktorima u Javi i na kraju ćemo istražiti razlike između metode i konstruktora.
=> Ovdje pogledajte Vodič za početnike za Java.
Počnimo s privatnim konstruktorom na Javi.
Što ćete naučiti:
- Privatni konstruktor u Javi
- Konstruktor apstraktne klase u Javi
- Konstruktor sučelja u Javi
- Konstruktor niza u Javi
- Konstruktori nizova u Javi
- Destruktor u Javi
- Konstruktor protiv metode u Javi
- Često postavljana pitanja
- Zaključak
- Preporučena literatura
Privatni konstruktor u Javi
Kao što je već spomenuto, konstruktori u klasi Java mogu imati pridružene specifikatore pristupa. Stoga možemo imati konstruktore koji su privatni ili javni. O dodatcima za pristup razgovarat ćemo više u našim slijedećim vodičima, a također ćemo ponovno posjetiti konstruktore.
Kada se konstruktor proglasi privatnim, tada mu se može pristupiti samo unutar klase. Ne može pristupiti izvedenim klasama putem druge klase. Stoga trebamo osigurati javnu metodu u klasi koja ima privatne konstruktore kako bi ova javna metoda mogla pristupiti privatnim konstruktorima.
U Javi se privatni konstruktor može koristiti u sljedećim situacijama:
- Za primjenu singletona.
- Za uključivanje tvorničkih metoda.
- Za klase koje imaju samo statičke članove (varijable i metode).
- Za razrede koji imaju konačne članove. (konstante - konačne i statične).
- Da biste koristili tipično nabrajanje.
Kao primjer , idemo na jedan singleton. Jednostruka klasa je klasa koja istovremeno omogućuje samo jedan objekt. Možemo koristiti privatni konstruktor kako bismo osigurali da ne dopustimo stvaranje više od jednog objekta.
Program u nastavku implementira singleton klasu koristeći privatni konstruktor.
class SingleTonClass { //Static Class Reference private static SingleTonClass obj=null; private SingleTonClass(){ System.out.println('SingleTonClass::Private constructor'); } public static SingleTonClass create_object(){ //logic to create only one instance if(obj==null){ obj= new SingleTonClass(); } return obj; } public void display(){ System.out.println('This is SingleTonClass !!'); } } class Main { public static void main(String args[]){ //cannot call private constructor directly. SingleTonClass myobject= SingleTonClass.create_object(); myobject.display(); } }
Izlaz:
kako mogu otvoriti apk datoteku
Gornji program deklarira singleton klasu. Osigurali smo privatni konstruktor i javnu metodu za pristup privatnom konstruktoru te također ograničili broj objekata na samo jedan. U glavnoj metodi izvršavamo javnu metodu za stvaranje objekta klase singleton.
Konstruktor apstraktne klase u Javi
Apstraktna klasa u Javi kao C ++, osim što za razliku od C ++, u Java-i imamo apstraktnu ključnu riječ koja se koristi za deklariranje apstraktne klase. Apstraktne klase u Javi mogu imati konstruktore. Ovaj konstruktor apstraktne klase poziva se kada kreiramo instancu klase implementacije (koja nasljeđuje apstraktnu klasu).
Razmotrite sljedeći primjer konstruktora apstraktne klase.
//abstract class declaration abstract class BaseClass { BaseClass() { System.out.println('BaseClass::Constructor Called'); } abstract void func1(); } class DerivedClass extends BaseClass { DerivedClass() { System.out.println('DerivedClass::Constructor Called'); } void func1() { System.out.println('DerivedClass::func1() called'); } } class Main { public static void main(String args[]) { DerivedClass d = new DerivedClass(); } }
Izlaz:
Kako se apstraktna klasa ne može instancirati, nasljeđujemo novu klasu iz ove apstraktne klase. Rezultat programa pokazuje da kada u glavnoj metodi stvorimo objekt izvedene klase, tada se prvo poziva konstruktor apstraktne klase, a zatim konstruktor izvedene klase.
Konstruktor sučelja u Javi
Sučelja u Javi slična su apstraktnim klasama. Sučelja su prema zadanim postavkama javni sažetak i imaju samo prototipove metoda. Ti se prototipi zatim implementiraju u klasu koja implementira sučelje.
Dakle, jesu li konstruktori prisutni u sučeljima?
Ne. Sučelja nemaju konstruktore. To je zato što su metode u sučelju samo prototipi i stoga ne trebamo instancirati ili stvarati objekt sučelja jer ga uopće nećemo koristiti. Stoga nije potrebno imati konstruktor ni u sučelju.
Sljedeći Java program pokazuje ovu logiku.
//interface declaration interface Interface_Add{ public int addNumbers(int num1, int num2); //method prototype } class AddClass implements Interface_Add{ public int addNumbers(int num1, int num2){ //method implementation int result= num1+num2; return result; } } class Main{ public static void main(String args[]) { AddClass obj= new AddClass(); System.out.println('Result of addition:' + obj.addNumbers(2, 3)); } }
Izlaz:
Ovdje imamo sučelje 'Interface_add' s jednom metodom 'addNumbers' prototipa. Tada klasa 'AddClass' implementira ovo sučelje i također metodu addNumbers.
U glavnoj metodi klasa se instancira i metoda se izvršava. Stoga u ovom sučelju ne vidimo potrebu za konstruktorom.
Sada razgovarajmo o konstruktorima nekih postojećih klasa u Stringu i Arrayu sličnom Javi.
Konstruktor niza u Javi
Objekt niza u Javi može se definirati kao objekt klase String. Klasa String pruža sljedeće konstruktore za stvaranje i inicijalizaciju String objekata.
U nastavku se razmatraju neki od ovih konstruktora:
# 1) Niz (bajt [] myArray)
Konstruira novi objekt String iz zadanog bajt polja. Za konstrukciju objekta niza koristi zadani skup znakova platforme i dekodira bajtni niz.
Primjer:
byte[] myArray = {65, 66, 67, 68, 69}; String str =new String(myArray); //ABCDE
# 2) Niz (bajt [] myArray, Charset char_set)
Ovaj konstruktor konstruira novi objekt niza pomoću char_set navedenog u pozivu konstruktora za dekodiranje bajt polja.
Primjer:
byte[] myArray = {65, 66, 67, 68, 69}; Charset cs = Charset.defaultCharset(); String str = new String(myArray, cs); //ABCDE
# 3) Niz (char [] myArray)
String objekt možemo konstruirati iz niza znakova.
Primjer:
char myArray[] = {'P', 'a', 'r', 'i', 's'}; String s = new String(myArray); //Paris
# 4) Niz (char [] myArray, int start_index, int count)
Ovdje konstruiramo objekt String iz niza znakova tako što uključujemo broj znakova od start_index do broja.
Primjer:
char myArray[] = {'P', 'a', 'r', 'i', 's'}; String s = new String(myArray, 0,2); //Pa
# 5) String (int [] intArray, int offset, int count)
Gornji konstruktor dodjeljuje novi String objekt iz int niza. Broj znakova u nizu definiran je pomakom i brojanjem.
Primjer:
int[] intArray = {65, 69,73,79,85 }; String s = new String (intArray, 0, 5); //AEIOU
# 6) String (StringBuffer strbuffer)
U ovom konstruktoru novi String objekt se gradi od StringBuffer objekta.
Primjer:
StringBuffer strbuffer = new StringBuffer('SoftwareTestingHelp'); String s = new String (strbuffer); //SoftwareTestingHelp
# 7) String (StringBuilder strbuilder)
Novi String objekt kreira se pomoću StringBuilder objekta.
Primjer:
StringBuilder strbuilder = new StringBuilder('SoftwareTestingHelp'); String s = new String(strbuilder); // SoftwareTestingHelp
Konstruktori nizova u Javi
Nizovi koriste konstruktore za stvaranje i inicijalizaciju nizova pomoću nove ključne riječi kao što je prikazano u nastavku.
int[] data = new int[4];
Gornja izjava inicijalizira niz od 4 elementa na zadanih 0.
Sljedeći način inicijalizacije niza dan je u nastavku:
int[] data = new int[]{2, 4, 6, 8};
Destruktor u Javi
Do sada smo u Javi vidjeli konstruktore pomoću kojih stvaramo objekt. Kad objekt završi sa svojim poslom i više nije potreban, tada memoriju dodijeljenu objektu treba osloboditi ili osloboditi. Ovo je posao destruktora u Javi.
U Javi je Sakupljač smeća odgovoran za puštanje objekata koji se više ne koriste ili su postali nedostupni. Destruktori u Javi nazivaju se finalizatorima i oni su nedeterministički takvi da ne možemo jamčiti da će se izvršiti.
U Javi ne trebamo brinuti o destruktorima. Destruktori nemaju određenu sintaksu na Javi. Objekti su uništeni, ali mi ne zovemo destruktor na način kako ga zovemo u C ++.
Kao što je gore spomenuto, posao destruktora obavlja finalizator koji zove Sakupljač smeća.
Metoda finalizatora u Javi prikazana je u nastavku za vašu referencu.
class Main { public static void main(String[] args) { Main dm = new Main(); //create object dm = null; System.gc(); //call garbage collector System.out.println('Main Mathod'); } protected void finalize() //finalize method { System.out.println('Finalize method :: object is garbage collected'); } }
Izlaz:
U gornjem programu kreiramo objekt klase. Postavite na nulu i tada pozivamo metodu System.gc (). Sad je taj objekt nedostupan i implicitno se poziva metoda finalizacije (destruktor).
Konstruktor protiv metode u Javi
Idemo tabularizirati neke razlike između konstruktora i metode u Javi.
Konstruktori | Metoda |
---|---|
Stvara novi objekt. | Djeluje na već postojećem objektu. |
Blok koda koji se koristi za inicijalizaciju članova klase prilikom stvaranja objekta. | Zbirka programskih izjava koje generiraju rezultat kada se izvrše. |
Koristi se za izvršavanje inicijalizacije objekata. | Slijed naredbi koje izvršava Java. Može sadržavati ili ne sadržavati rutinu inicijalizacije. |
Priziva se implicitno. | Potrebno je izričito pozivanje u programu. |
Pozvano kada se kreira novi objekt pomoću nove ključne riječi. | Pozvano kada programer pozove metodu. |
Ima isto ime kao i razred. | Može imati bilo koje ime dopušteno programskim jezikom. |
Nema tip povratka. | Mora imati tip return ili bi se u suprotnom trebao vratiti void. |
Klasa može imati mnogo preopterećenih konstruktora. | Klasa je mogla imati preopterećenje kao i različite metode. |
Ne može ga naslijediti dječja klasa. | Može ga naslijediti klasa djeteta i čak poništiti. |
Često postavljana pitanja
P # 1) Mogu li konstruktori biti privatni?
Odgovor: Da. Konstruktori u Javi mogu biti privatni. Sve klase, uključujući apstraktne klase, mogu imati privatne konstruktore. Korištenjem privatnih konstruktora možemo spriječiti instanciranje klase ili možemo ograničiti broj objekata te klase.
P # 2) Koja je upotreba konstruktora sažetka klasa u Javi?
Odgovor: Konstruktor apstraktne klase poziva se kada kreiramo objekt izvedene klase koji nasljeđuje apstraktnu klasu. Osim toga ako apstraktna klasa ima neke varijable člana, možemo ih inicijalizirati u konstruktoru apstraktne klase.
P # 3) Možemo li definirati parametarski konstruktor u apstraktnoj klasi na Javi?
Odgovor: Da, možemo imati parametarski konstruktor u apstraktnoj klasi. Tada možemo pozvati ovaj konstruktor iz izvedene klase koja je naslijedila apstraktnu klasu pomoću poziva super ().
P # 4) Znate li zašto u Javi nema Destruktora?
Odgovor: Java ne mora imati određeni destruktor jer ima svoj sakupljač smeća. Ovaj sakupljač smeća uništava nedostupne predmete i oslobađa memoriju. Metoda nazvana finalize također je dio sakupljača smeća koji se izvršava nedeterministički i izvršava funkciju destruktora poput oslobađanja resursa itd.
P # 5) Može li sažetak klase imati tijelo?
Odgovor: Ne. Apstraktna klasa može imati samo deklaracije metoda i konstruktore. Njegove se metode ne provode. Klasa koja nasljeđuje ovu apstraktnu klasu implementira metode. Osim prototipa ili deklaracije, može imati i specifikatore vidljivosti ili pristupa.
Zaključak
Ovim je dovršen naš vodič o konstruktorima na Javi. Ovdje smo pokrili definiciju, stvaranje i vrste konstruktora. Također smo razgovarali o preopterećenju konstruktora i lancu konstruktora u Javi.
Istražili smo apstraktne i privatne konstruktore u Javi i naučili zašto sučelja ne mogu imati konstruktore. Vidjeli smo konstruktore koji se koriste u razredima polja i Stringa.
Također smo razgovarali o destruktorima u Javi koji izvršavaju funkciju suprotnu od konstruktora. Konstruktori stvaraju predmete, dok destruktori uništavaju predmete. U Javi funkciju destruktora provodi finalizator koji se izvršava tijekom sakupljanja smeća.
Dakle, u Javi nemamo određeni destruktor i ne trebamo ga definirati na način kako to imamo u C ++. Također smo razgovarali o razlikama između metode i konstruktora. Znamo da konstruktor nije isto što i metoda, ali konstruktor možemo promatrati kao posebnu metodu.
=> Pročitajte seriju Easy Training Training.
Preporučena literatura
- Java konstruktor - konstruktori klase, kopije i zadani
- C # koncepti: konstruktor, destruktor, statička klasa, struktura i nabrajanje
- Java niz nizova - Vodič s primjerima koda
- Java string sa String Buffer-om i String Builder Tutorial
- Duljina Java niza () Metoda s primjerima
- Java String sadrži () Vodič za metode s primjerima
- Java String indexOf metoda s primjerima koda
- Java String compareTo metoda s primjerima programiranja