private abstract array
V tomto výučbe sa budeme zaoberať špeciálnymi konštruktormi, ako sú Súkromný konštruktor v Jave, Abstrakt, String, Pole, Rozhranie a Destruktor v Jave:
V našom poslednom tutoriále o konštruktoroch v Jave sme sa naučili dôležité pojmy súvisiace s konštruktormi v Jave. Diskutovali sme o tom, ako vytvoriť konštruktor a pravidlá definovania konštruktorov spolu s typmi konštruktorov atď.
Naučili sme sa tiež preťaženie konštruktorov a reťazenie konštruktorov. Teraz poďme diskutovať o určitých špeciálnych konštruktoroch ako súkromný konštruktor, abstraktný konštruktor a konštruktory reťazcov a polí v Jave. Potom si povieme niečo o destruktoroch v Jave a nakoniec preskúmame rozdiely medzi metódou a konštruktormi.
=> Tu si pozrite príručku Java Beginners Guide.
Začnime súkromným konštruktorom v Jave.
Čo sa dozviete:
- Súkromný konštruktér v Jave
- Konštruktor abstraktných tried v Jave
- Konštruktor rozhrania v Jave
- String Constructor v Jave
- Konštruktory poľa v Jave
- Destruktor v Jave
- Metóda Constructor Vs v Jave
- často kladené otázky
- Záver
- Odporúčané čítanie
Súkromný konštruktér v Jave
Ako už bolo spomenuté, konštruktory v triede Java môžu mať priradené špecifikátory prístupu. Preto môžeme mať konštruktory, ktoré sú súkromné alebo verejné. V ďalších príručkách si povieme viac o špecifikátoroch prístupu a ešte raz sa vrátime ku konštruktérom.
Keď je konštruktor vyhlásený za súkromný, potom je k nemu prístup iba vo vnútri triedy. Nemôže získať prístup k odvodeným triedam prostredníctvom inej triedy. Preto musíme poskytnúť verejnú metódu v triede, ktorá má súkromné konštruktory, aby táto verejná metóda mohla získať prístup k súkromným konštruktorom.
V prostredí Java je možné súkromný konštruktor použiť v nasledujúcich situáciách:
- Na implementáciu singletonov.
- Pre začlenenie továrenských metód.
- Pre triedy, ktoré majú iba statické členy (premenné a metódy).
- Pre triedy, ktoré majú konečných členov. (konštanty - konečné a statické).
- Používať typovo bezpečné výčty.
Ako príklad , poďme na samostatnú hodinu. Trieda singleton je trieda, ktorá umožňuje naraz iba jeden objekt. Môžeme použiť súkromný konštruktor, aby sme zabezpečili, že neumožníme vytvorenie viac ako jedného objektu.
Nasledujúci program implementuje triedu singleton pomocou súkromného konštruktora.
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(); } }
Výkon:
Vyššie uvedený program vyhlasuje triedu singleton. Poskytli sme súkromného konštruktora a verejnú metódu na prístup k súkromnému konštruktoru a tiež na obmedzenie počtu objektov iba na jeden. V hlavnej metóde vykonáme verejnú metódu na vytvorenie objektu triedy singleton.
Konštruktor abstraktných tried v Jave
Abstraktná trieda v Jave ako C ++, až na to, že na rozdiel od C ++ máme v Jave abstraktné kľúčové slovo použité na vyhlásenie abstraktnej triedy. Abstraktné triedy v Jave môžu mať konštruktory. Tento konštruktér abstraktnej triedy sa volá, keď vytvoríme inštanciu implementačnej triedy (ktorá dedí abstraktnú triedu).
Zvážte nasledujúci príklad konštruktora abstraktných tried.
//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(); } }
Výkon:
Pretože abstraktnú triedu nemožno vytvoriť, dedíme z nej novú triedu. Výstup programu ukazuje, že keď v hlavnej metóde vytvoríme objekt odvodenej triedy, potom sa najskôr zavolá konštruktor abstraktnej triedy a až potom nasleduje konštruktor odvodenej triedy.
Konštruktor rozhrania v Jave
Rozhrania v Jave sú podobné abstraktným triedam. Rozhrania sú predvolene verejným abstraktom a majú iba prototypy metód. Tieto prototypy sa potom implementujú do triedy, ktorá implementuje rozhranie.
Sú teda v rozhraniach prítomní konštruktéri?
Nie. Rozhrania nemajú konštruktory. Je to preto, že metódy v rozhraní sú iba prototypy, a preto nemusíme vytvárať inštancie alebo vytvárať objekt rozhrania, pretože ho nebudeme vôbec používať. Preto nie je potrebné mať v rozhraní ani konštruktor.
Nižšie uvedený program Java demonštruje túto logiku.
ako otvárať torrentové súbory na mac
//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)); } }
Výkon:
Tu máme rozhranie „Interface_add“ s jednou metódou „addNumbers“ prototypu. Potom trieda „AddClass“ implementuje toto rozhranie a tiež metódu addNumbers.
V hlavnej metóde je inštancia triedy a vykonanie metódy. Preto v tomto rozhraní nevidíme potrebu konštruktora.
Teraz si predstavme konštruktory niektorých už existujúcich tried v prostredí Java, ako sú String a Array.
String Constructor v Jave
Reťazcový objekt v Jave možno definovať ako objekt triedy String. Trieda String poskytuje nasledujúce konštruktory na vytváranie a inicializáciu objektov String.
Niektoré z týchto konštruktorov sú uvedené nižšie:
# 1) Reťazec (byte () myArray)
Vytvorí nový objekt String z daného bajtového poľa. Na konštrukciu reťazcového objektu používa predvolenú znakovú sadu platformy a dekóduje bajtové pole.
Príklad:
byte() myArray = {65, 66, 67, 68, 69}; String str =new String(myArray); //ABCDE
# 2) Reťazec (byte () myArray, Charset char_set)
Tento konštruktor konštruuje nový objekt reťazca pomocou znaku char_set uvedeného vo volaní konštruktora na dekódovanie bajtového poľa.
Príklad:
byte() myArray = {65, 66, 67, 68, 69}; Charset cs = Charset.defaultCharset(); String str = new String(myArray, cs); //ABCDE
# 3) Reťazec (char () myArray)
Môžeme skonštruovať objekt String z poľa znakov.
Príklad:
char myArray() = {'P', 'a', 'r', 'i', 's'}; String s = new String(myArray); //Paris
# 4) Reťazec (char () myArray, int start_index, int count)
Tu zostrojíme objekt String z poľa znakov tak, že zahrnieme počet znakov od start_index až po počet.
Príklad:
char myArray() = {'P', 'a', 'r', 'i', 's'}; String s = new String(myArray, 0,2); //Pa
# 5) Reťazec (int () intArray, int offset, int count)
Vyššie uvedený konštruktor alokuje nový objekt String z poľa int. Počet znakov v reťazci je definovaný posunom a počtom.
Príklad:
int() intArray = {65, 69,73,79,85 }; String s = new String (intArray, 0, 5); //AEIOU
# 6) Reťazec (StringBuffer strbuffer)
V tomto konštruktore je nový objekt String skonštruovaný z objektu StringBuffer.
Príklad:
StringBuffer strbuffer = new StringBuffer('SoftwareTestingHelp'); String s = new String (strbuffer); //SoftwareTestingHelp
# 7) Reťazec (StringBuilder strbuilder)
Nový objekt String sa vytvorí pomocou objektu StringBuilder.
Príklad:
StringBuilder strbuilder = new StringBuilder('SoftwareTestingHelp'); String s = new String(strbuilder); // SoftwareTestingHelp
Konštruktory poľa v Jave
Polia pomocou konštruktorov vytvárajú a inicializujú polia pomocou nového kľúčového slova, ako je uvedené nižšie.
je kľúč zabezpečenia siete rovnaký ako heslo wifi
int() data = new int(4);
Vyššie uvedené vyhlásenie inicializuje pole 4 prvkov na predvolenú hodnotu 0.
Ďalší spôsob inicializácie poľa je uvedený nižšie:
int() data = new int(){2, 4, 6, 8};
Destruktor v Jave
Doteraz sme videli v Jave konštruktory, pomocou ktorých vytvárame objekt. Keď objekt dokončí svoju úlohu a už nie je potrebný, potom je potrebné uvoľniť alebo prideliť pamäť pridelenú tomuto objektu. Toto je práca deštruktora v Jave.
V prostredí Java je Garbage Collector zodpovedný za uvoľnenie objektov, ktoré sa už nepoužívajú alebo sa stali nedostupnými. Destruktory v Jave sa nazývajú finalizátory a sú nedeterministické, takže nemôžeme zaručiť, že budú vykonané.
V Jave sa nemusíme báť ničiteľov. Destruktory nemajú v Jave konkrétnu syntax. Objekty sú zničené, ale nenazývame destruktor tak, ako ho nazývame v C ++.
Ako už bolo spomenuté vyššie, prácu deštruktora vykonáva finalizátor, ktorý volá Garbage Collector.
Metóda finalizátora v jazyku Java je uvedená nižšie pre vašu referenciu.
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'); } }
Výkon:
Vo vyššie uvedenom programe vytvoríme objekt triedy. Nastavíme ju na nulu a potom zavoláme metódu System.gc (). Teraz je tento objekt nedostupný a implicitne sa volá metóda finalizácie (deštruktor).
Metóda Constructor Vs v Jave
Uveďme tabelarizáciu niektorých rozdielov medzi konštruktorom a metódou v Jave.
Konštruktéri | Metóda |
---|---|
Vytvorí nový objekt. | Funguje na už existujúcom objekte. |
Blok kódu používaný na inicializáciu členov triedy pri vytváraní objektu. | Zbierka programovacích príkazov, ktoré po vykonaní generujú výsledok. |
Používa sa na vykonávanie inicializácie objektov. | Postupnosť príkazov, ktoré vykonáva Java. Môže alebo nemusí obsahovať inicializačnú rutinu. |
Vyvolané implicitne. | Musí byť explicitne vyvolaná v programe. |
Vyvolané, keď je pomocou nového kľúčového slova vytvorený nový objekt. | Vyvolá sa, keď programátor zavolá metódu. |
Má rovnaké meno ako trieda. | Môže mať akýkoľvek názov povolený programovacím jazykom. |
Nemá návratový typ. | Musí mať návratový typ, inak by sa mal vrátiť neplatný. |
Trieda môže mať veľa preťažených konštruktorov. | Trieda môže mať preťaženie aj rôzne metódy. |
Nemôže ho zdediť trieda dieťaťa. | Môže byť zdedený detskou triedou a dokonca prepísaný. |
často kladené otázky
Otázka č. 1) Môžu byť konštruktéri súkromní?
Odpoveď: Áno. Konštruktéri v prostredí Java môžu byť súkromní. Všetky triedy vrátane abstraktných môžu mať súkromné konštruktory. Pomocou súkromných konštruktorov môžeme zabrániť inštancii triedy alebo môžeme obmedziť počet objektov tejto triedy.
Otázka č. 2) Aké je použitie nástroja Class Class Constructor v Jave?
Odpoveď: Konštruktor abstraktnej triedy sa vyvolá, keď vytvoríme objekt odvodenej triedy, ktorý dedí abstraktnú triedu. Okrem toho, ak má abstraktná trieda niektoré členské premenné, môžeme ich inicializovať v konštruktore abstraktnej triedy.
Otázka 3) Môžeme definovať parametrizovaný konštruktor v abstraktnej triede v Jave?
Odpoveď: Áno, môžeme mať parametrizovaný konštruktor v abstraktnej triede. Potom môžeme tento konštruktor zavolať z odvodenej triedy, ktorá zdedila abstraktnú triedu pomocou volania super ().
Otázka č. 4) Viete, prečo v Jave neexistuje destruktor?
Odpoveď: Java nemusí mať konkrétny deštruktor, pretože má svojho zberača odpadu. Tento smetiar ničí objekty, ktoré sú nedosiahnuteľné, a uvoľňuje pamäť. Metóda s názvom finalize je tiež súčasťou zberača odpadkov, ktorý sa vykonáva nedeterministicky a vykonáva funkciu deštruktora, ako je uvoľňovanie zdrojov atď.
Otázka č. 5) Môže mať Abstraktná trieda telo?
Odpoveď: Nie. Abstraktná trieda môže mať iba deklarácie metód a konštruktory. Jeho metódy nie sú implementované. Trieda, ktorá dedí túto abstraktnú triedu, implementuje metódy. Okrem prototypov alebo vyhlásení môže mať aj špecifikátory viditeľnosti alebo prístupu.
Záver
Týmto sa dokončuje náš tutoriál o konštruktoroch v Jave. Tu sme sa zaoberali definíciou, tvorbou a typmi konštruktorov. Diskutovali sme tiež o preťažení konštruktorov a reťazení konštruktorov v Jave.
Preskúmali sme abstraktné a súkromné konštruktory v Jave a zistili sme, prečo rozhrania nemôžu mať konštruktory. Videli sme konštruktory, ktoré sa používajú v triedach array a String.
Diskutovali sme tiež o deštruktoroch v Jave, ktoré vykonávajú opačnú funkciu ako konštruktory. Konštruktéri vytvárajú objekty, zatiaľ čo ničitelia ich ničia. V Jave sa funkcia deštruktora vykonáva pomocou finalizátora, ktorý sa vykonáva počas zberu odpadu.
Takže v Jave nemáme konkrétny deštruktor a nemusíme ho definovať tak, ako to robíme v C ++. Diskutovali sme tiež o rozdieloch medzi metódou a konštruktorom. Vieme, že konštruktor nie je rovnaký ako metóda, ale môžeme ho považovať za špeciálnu metódu.
=> Prečítajte si sériu Easy Java Training Series.
Odporúčané čítanie
- Java Constructor - trieda, kopírovanie a predvolené konštruktory
- Koncepty C #: Constructor, Destructor, Static Class, Struct & Enum
- Výukový program Java String Array s príkladmi kódu
- Výukový program Java String s programom String Buffer a String Builder
- Metóda Java String length () s príkladmi
- Java String obsahuje () Výukový program metód s príkladmi
- Metóda Java String indexOf s príkladmi kódu
- Metóda Java String compareTo s príkladmi programovania