private abstract array
Ta vadnica bo razpravljala o posebnih konstruktorjih, kot so zasebni konstruktor v Javi, abstrakt, niz, matrika, vmesnik in destruktor v Javi:
V naši zadnji vadnici o konstruktorjih v Javi smo se naučili pomembnih konceptov, povezanih s konstruktorji v Javi. Razpravljali smo o tem, kako ustvariti konstruktor in o pravilih za definiranje konstruktorjev, skupaj z vrstami konstruktorjev itd.
Naučili smo se tudi preobremenitve konstruktorjev in veriženja konstruktorjev. Zdaj pa razpravljajmo o nekaterih posebnih konstruktorjih, kot so zasebni konstruktor, abstraktni konstruktor in konstruktorji nizov in nizov v Javi. Nato bomo razpravljali o destruktorjih v Javi in na koncu še o razlikah med metodo in konstruktorji.
=> Tu si oglejte Vodnik za začetnike Java.
kako ravnati v težkih situacijah
Začnimo z zasebnim konstruktorjem v Javi.
Kaj se boste naučili:
- Zasebni konstruktor v Javi
- Konstruktor abstraktnih razredov v Javi
- Konstruktor vmesnika v Javi
- Konstruktor nizov v Javi
- Konstruktorji nizov v Javi
- Destruktor v Javi
- Konstruktor Vs metoda v Javi
- Pogosto zastavljena vprašanja
- Zaključek
- Priporočeno branje
Zasebni konstruktor v Javi
Kot smo že omenili, imajo lahko konstruktorji v razredu Java z njimi povezane specifikacije dostopa. Tako imamo lahko konstruktorje, ki so zasebni ali javni. O podrobnejših podrobnostih o dostopu bomo razpravljali v naslednjih vajah in še enkrat preučili konstruktorje.
Ko je konstruktor razglašen za zasebnega, je do njega mogoče dostopati samo znotraj razreda. Do izpeljanih razredov ne more dostopati prek drugega razreda. Zato moramo v razredu, ki ima zasebne konstruktorje, zagotoviti javno metodo, da bo lahko ta javna metoda dostopala do zasebnih konstruktorjev.
V Javi lahko zasebni konstruktor uporabljamo v naslednjih primerih:
- Za izvajanje singletonov.
- Za vključitev tovarniških metod.
- Za razrede, ki imajo samo statične člane (spremenljivke in metode).
- Za razrede s končnimi člani. (konstante - končne in statične).
- Za uporabo tipiziranih naštevanj.
Kot primer , vzemimo eno uro. Razred singleton je razred, ki hkrati omogoča samo en predmet. Z zasebnim konstruktorjem lahko zagotovimo, da ne dovolimo izdelave več kot enega predmeta.
Spodnji program izvaja singleton razred z uporabo zasebnega konstruktorja.
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(); } }
Izhod:
Zgornji program razglasi singleton razred. Za dostop do zasebnega konstruktorja in tudi za omejitev števila predmetov na samo enega smo zagotovili zasebni konstruktor in javno metodo. V glavni metodi izvedemo javno metodo za ustvarjanje predmeta razreda singleton.
Konstruktor abstraktnih razredov v Javi
Abstraktni razred v Javi kot C ++, le da za razliko od C ++ imamo abstraktno ključno besedo v Javi, ki se uporablja za razglasitev abstraktnega razreda. Abstraktni razredi v Javi imajo lahko konstruktorje. Ta konstruktor abstraktnega razreda se pokliče, ko ustvarimo primerek izvedbenega razreda (ki podeduje abstraktni razred).
Razmislite o naslednjem primeru konstruktorja abstraktnih razredov.
//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(); } }
Izhod:
Ker abstraktnega razreda ni mogoče ustvariti, ga podedujemo iz tega abstraktnega razreda. Rezultat programa kaže, da ko v glavni metodi ustvarimo objekt izpeljanega razreda, se najprej pokliče konstruktor abstraktnega razreda, nato pa konstruktor izpeljanega razreda.
Konstruktor vmesnika v Javi
Vmesniki v Javi so podobni abstraktnim razredom. Vmesniki so privzeto javni povzetek in imajo samo prototipe metod. Ti prototipi se nato implementirajo v razred, ki izvaja vmesnik.
So torej vmesniki prisotni konstruktorji?
Ne. Vmesniki nimajo konstruktorjev. To je zato, ker so metode v vmesniku samo prototipi, zato nam ni treba ustvariti predmeta ali ustvariti predmeta vmesnika, saj ga sploh ne bomo uporabljali. Zato v vmesniku ni treba imeti konstruktorja.
Spodnji program Java prikazuje to logiko.
//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)); } }
Izhod:
Tu imamo vmesnik 'Interface_add' z eno metodo 'addNumbers' prototip. Nato razred ‘AddClass’ implementira ta vmesnik in tudi metodo addNumbers.
V glavni metodi se razred ustvari s primerkom in metoda se izvrši. Zato v tem vmesniku ne vidimo potrebe po konstruktorju.
Zdaj pa se pogovorimo o konstruktorjih nekaterih že obstoječih razredov v Javi podobnih String in Array.
Konstruktor nizov v Javi
Nizni objekt v Javi lahko definiramo kot objekt razreda String. Razred String ponuja naslednje konstruktorje za ustvarjanje in inicializacijo predmetov String.
Nekateri od teh konstruktorjev so obravnavani spodaj:
# 1) Niz (bajt () myArray)
Konstruira nov objekt String iz danega bajtnega polja. Za izdelavo predmeta string uporablja privzeti nabor znakov platforme in dekodira bajtno matriko.
Primer:
byte() myArray = {65, 66, 67, 68, 69}; String str =new String(myArray); //ABCDE
# 2) Niz (bajt () myArray, nabor znakov char_set)
Ta konstruktor izdela nov objekt niza z uporabo char_set, določenega v klicu konstruktorja, za dekodiranje bajtne matrike.
Primer:
byte() myArray = {65, 66, 67, 68, 69}; Charset cs = Charset.defaultCharset(); String str = new String(myArray, cs); //ABCDE
# 3) Niz (char () myArray)
String objekt lahko sestavimo iz nizov znakov.
Primer:
char myArray() = {'P', 'a', 'r', 'i', 's'}; String s = new String(myArray); //Paris
# 4) Niz (char () myArray, int start_index, int count)
Tu gradimo objekt String iz nizov znakov tako, da vključimo število znakov od start_index do štetja.
Primer:
char myArray() = {'P', 'a', 'r', 'i', 's'}; String s = new String(myArray, 0,2); //Pa
# 5) Niz (int () intArray, int offset, int count)
Zgornji konstruktor dodeli nov objekt String iz matrike int. Število znakov v nizu je določeno z odmikom in štetjem.
Primer:
int() intArray = {65, 69,73,79,85 }; String s = new String (intArray, 0, 5); //AEIOU
# 6) String (StringBuffer strbuffer)
V tem konstruktorju je iz predmeta StringBuffer zgrajen nov objekt String.
Primer:
StringBuffer strbuffer = new StringBuffer('SoftwareTestingHelp'); String s = new String (strbuffer); //SoftwareTestingHelp
# 7) String (StringBuilder strbuilder)
Z objektom StringBuilder se ustvari nov objekt String.
Primer:
StringBuilder strbuilder = new StringBuilder('SoftwareTestingHelp'); String s = new String(strbuilder); // SoftwareTestingHelp
Konstruktorji nizov v Javi
Polji uporabljajo konstruktorje za ustvarjanje in inicializacijo nizov z novo ključno besedo, kot je prikazano spodaj.
int() data = new int(4);
Zgornji stavek inicializira matriko 4 elementov na privzetih 0.
Spodaj je podan še en način inicializacije matrike:
int() data = new int(){2, 4, 6, 8};
Destruktor v Javi
Doslej smo v Javi videli konstruktorje, s katerimi ustvarjamo objekt. Ko predmet konča s svojim delom in ni več potreben, je treba sprostiti ali odstraniti pomnilnik, dodeljen predmetu. To je naloga destruktorja v Javi.
V Javi je Garbage Collector odgovoren za sprostitev predmetov, ki niso več v uporabi ali so postali nedosegljivi. Destruktorji v Javi se imenujejo zaključevalniki in so nedeterministični, zato ne moremo zagotoviti, da bodo izvedeni.
V Javi nam ni treba skrbeti za destruktorje. Destruktorji v Javi nimajo določene skladnje. Predmeti se uničijo, vendar destruktorja ne pokličemo tako, kot ga imenujemo v jeziku C ++.
Kot smo že omenili, delo destruktorja opravi zaključevalec, ki ga pokliče Garbage Collector.
Metoda zaključevanja v Javi je predstavljena spodaj za vašo referenco.
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'); } }
Izhod:
V zgornjem programu ustvarimo objekt razreda. Nastavite na nič in nato pokličemo metodo System.gc (). Zdaj je ta objekt nedosegljiv in je implicitno poklicana metoda dokončanja (destructor).
Konstruktor Vs metoda v Javi
Oglejmo si tabelarizacijo nekaterih razlik med konstruktorjem in metodo v Javi.
Konstruktorji | Metoda |
---|---|
Ustvari nov objekt. | Deluje na že obstoječem objektu. |
Blok kode, ki se uporablja za inicializacijo članov razreda pri ustvarjanju predmeta. | Zbirka programskih stavkov, ki ob izvedbi ustvarijo rezultat. |
Uporablja se za inicializacijo predmetov. | Zaporedje stavkov, ki jih izvaja Java. Lahko vsebuje ali ne vsebuje rutine inicializacije. |
Klicano implicitno. | V programu ga je treba izrecno priklicati. |
Pokliče se, ko z novo ključno besedo ustvarite nov objekt. | Pokliče se, ko programer pokliče metodo. |
Ima enako ime kot razred. | Lahko ima katero koli ime, ki ga dovoljuje programski jezik. |
Nima vrste vrnitve. | Mora imeti vrnjeno vrnitev, sicer pa naj se vrne nična. |
Razred ima lahko veliko preobremenjenih konstruktorjev. | Razred je lahko preobremenjen, pa tudi različne metode. |
Otroški razred ga ne more podedovati. | Podeduje ga lahko razred otrok in ga celo preglasi. |
Pogosto zastavljena vprašanja
V # 1) Ali so konstruktorji lahko zasebni?
Odgovor: Da. Konstruktorji v Javi so lahko zasebni. Vsi razredi, vključno z abstraktnimi razredi, imajo lahko zasebne konstruktorje. Z zasebnimi konstruktorji lahko preprečimo instanciranje razreda ali omejimo število predmetov tega razreda.
V # 2) Kakšna je uporaba konstruktorja abstraktnih razredov v Javi?
Odgovor: Konstruktor abstraktnega razreda se prikliče, ko ustvarimo objekt izpeljanega razreda, ki podeduje abstraktni razred. Poleg tega, če ima abstraktni razred nekaj spremenljivk članov, jih lahko inicializiramo v konstruktorju abstraktnega razreda.
V # 3) Ali lahko v razredu Abstract v Java definiramo parametrizirani konstruktor?
Odgovor: Da, v abstraktnem razredu imamo lahko parametriziran konstruktor. Potem lahko ta konstruktor pokličemo iz izvedenega razreda, ki je podedoval abstraktni razred s pomočjo klica super ().
V # 4) Ali veste, zakaj v Javi ni destruktorja?
Odgovor: Javi ni treba imeti posebnega destruktorja, saj ima zbiralnik smeti. Ta zbiralnik smeti uniči nedostopne predmete in sprosti pomnilnik. Metoda z imenom finalize je tudi del zbiralnika smeti, ki se izvaja nedeterministično in izvaja funkcijo destruktorja, kot je osvobajanje virov itd.
V # 5) Ali ima lahko abstraktni razred telo?
Odgovor: Ne. Abstraktni razred ima lahko samo deklaracije metod in konstruktorje. Njene metode se ne izvajajo. Razred, ki podeduje ta abstraktni razred, izvaja metode. Poleg prototipa ali deklaracije ima lahko tudi specifikatorje vidnosti ali dostopa.
Zaključek
S tem smo zaključili našo vadnico o konstruktorjih v Javi. Tu smo obravnavali definicijo, ustvarjanje in vrste konstruktorjev. Razpravljali smo tudi o preobremenitvi konstruktorjev in veriženju konstruktorjev v Javi.
Raziskovali smo abstraktne in zasebne konstruktorje v Javi in se naučili, zakaj vmesniki ne morejo imeti konstruktorjev. Videli smo konstruktorje, ki se uporabljajo v razredih matrike in niza.
Razpravljali smo tudi o destruktorjih v Javi, ki opravljajo funkcijo, ki je nasprotna funkciji konstruktorjev. Konstruktorji ustvarjajo predmete, medtem ko destruktorji uničujejo predmete. V Javi funkcijo destruktorja izvaja zaključevalnik, ki se izvaja med zbiranjem smeti.
Tako v Javi nimamo določenega destruktorja in ga ni treba definirati tako, kot v C ++. Razpravljali smo tudi o razlikah med metodo in konstruktorjem. Vemo, da konstruktor ni isto kot metoda, vendar lahko na konstruktor gledamo kot na posebno metodo.
=> Preberite serijo Easy Java Training Series.
Priporočeno branje
- Java Constructor - konstruktorji razredov, kopij in privzeti
- Koncepti C #: konstruktor, destruktor, statični razred, struktura in enum
- Niz nizov Java - Vadnica s primeri kode
- Java String z vmesnikom String Buffer in String Builder
- Dolžina niza Java () Metoda s primeri
- Java String vsebuje () Vadnico metode s primeri
- Java String indexOf Method With Primeri kode
- Java String compareTo Method s primeri programiranja