private abstract array
Denne opplæringen vil diskutere spesielle konstruktører som privat konstruktør i Java, abstrakt, streng, matrise, grensesnitt og ødelegger i Java:
I vår siste veiledning om konstruktører i Java lærte vi de viktige konseptene knyttet til konstruktører i Java. Vi diskuterte hvordan man lager en konstruktør og reglene for å definere konstruktører, sammen med typene konstruktører, etc.
Vi lærte også overbelastning av konstruktører og kjetting av konstruktører. La oss nå diskutere visse spesielle konstruktører som en privat konstruktør, abstrakt konstruktør og streng- og matrixkonstruktører i Java. Deretter vil vi diskutere destruktorer i Java, og til slutt vil vi utforske forskjellene mellom metode og konstruktører.
=> Ta en titt på Java Beginners Guide her.
La oss begynne med en privat konstruktør i Java.
Hva du vil lære:
- Privat konstruktør i Java
- Abstrakt klassekonstruktør i Java
- Grensesnittkonstruktør i Java
- String Constructor In Java
- Array Constructors In Java
- Destructor I Java
- Constructor Vs Method I Java
- ofte stilte spørsmål
- Konklusjon
- Anbefalt lesing
Privat konstruktør i Java
Som allerede nevnt, kan konstruktører i Java-klasse ha tilgangsspesifikatorer tilknyttet seg. Derfor kan vi ha konstruktører som er private eller offentlige. Vi vil diskutere mer om tilgangsspesifikatorer i de påfølgende opplæringene våre, og vi vil også se på konstruktører igjen.
Når konstruktøren blir erklært privat, kan den kun nås inne i klassen. Den får ikke tilgang til de avledede klassene gjennom en annen klasse. Derfor må vi tilby en offentlig metode i klassen som har private konstruktører, slik at denne offentlige metoden kan få tilgang til de private konstruktørene.
I Java kan private konstruktører brukes i følgende situasjoner:
- For implementering av singler.
- For å innlemme fabrikkmetoder.
- For klasser som bare har statiske medlemmer (variabler og metoder).
- For klasser som har endelige medlemmer. (konstanter - endelig og statisk).
- Å bruke typesikre oppføringer.
Som et eksempel , la oss ta en singleton-klasse. En singleton-klasse er en klasse som bare tillater ett objekt om gangen. Vi kan bruke den private konstruktøren for å sikre at vi ikke lar mer enn ett objekt opprettes.
Programmet nedenfor implementerer en singleton-klasse ved hjelp av en privat konstruktør.
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(); } }
Produksjon:
Ovennevnte program erklærer en singleton-klasse. Vi har gitt en privat konstruktør og en offentlig metode for å få tilgang til den private konstruktøren, og også for å begrense antall objekter til bare ett. I hovedmetoden utfører vi den offentlige metoden for å lage et klasseobjekt i singleton.
Abstrakt klassekonstruktør i Java
Abstrakt klasse i Java som C ++ bortsett fra at i motsetning til C ++ har vi et abstrakt nøkkelord i Java som brukes til å erklære en abstrakt klasse. Abstrakte klasser i Java kan ha konstruktører. Denne abstrakte klassekonstruktøren kalles når vi lager en forekomst av en implementeringsklasse (som arver abstrakt klasse).
Tenk på følgende eksempel på en abstrakt klassekonstruktør.
//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(); } }
Produksjon:
den beste gratis mp3-nedlasteren for android
Ettersom en abstrakt klasse ikke kan instantiseres, arver vi en ny klasse fra denne abstrakte klassen. Utgangen fra programmet viser at når vi lager et objekt av den avledede klassen i hovedmetoden, kalles konstruktøren til den abstrakte klassen først, etterfulgt av en avledet klassekonstruktør.
Grensesnittkonstruktør i Java
Grensesnitt i Java ligner på abstrakte klasser. Grensesnitt er som standard offentlig abstrakt og har bare metodeprototyper. Disse prototypene implementeres deretter i klassen som implementerer grensesnittet.
Så er konstruktører til stede i grensesnitt?
Nei. Grensesnitt har ikke konstruktører. Dette er fordi metodene i et grensesnitt bare er prototyper, og derfor trenger vi ikke instantiere eller lage et objekt av grensesnittet, ettersom vi ikke kommer til å bruke det i det hele tatt. Derfor er det heller ikke nødvendig å ha en konstruktør i grensesnittet.
Java-programmet nedenfor viser denne logikken.
//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)); } }
Produksjon:
Her har vi et grensesnitt ‘Interface_add’ med en metode ‘addNumbers’ prototype. Deretter implementerer en klasse ‘AddClass’ dette grensesnittet og også metoden addNumbers.
I hovedmetoden blir klassen instantiert og metoden utført. Derfor ser vi ikke noe behov for en konstruktør i dette grensesnittet.
La oss nå diskutere konstruktører av noen eksisterende klasser i Java-lignende String og Array.
String Constructor In Java
Et strengobjekt i Java kan defineres som et objekt i klasse String. Strengklasse gir følgende konstruktører for å opprette og initialisere strengobjekter.
Noen av disse konstruktørene er diskutert nedenfor:
# 1) Streng (byte () myArray)
Konstruerer et nytt strengobjekt fra et gitt byte-utvalg. For å konstruere strengobjektet bruker den standard tegnsett for plattform og dekoder byte-arrayet.
Eksempel:
byte() myArray = {65, 66, 67, 68, 69}; String str =new String(myArray); //ABCDE
# 2) Streng (byte () myArray, Charset char_set)
Denne konstruktøren konstruerer et nytt strengobjekt ved å bruke char_set spesifisert i konstruktøranropet for å dekode byte-arrayet.
Eksempel:
byte() myArray = {65, 66, 67, 68, 69}; Charset cs = Charset.defaultCharset(); String str = new String(myArray, cs); //ABCDE
# 3) String (char () myArray)
Vi kan konstruere et strengobjekt fra et tegnarray.
Eksempel:
char myArray() = {'P', 'a', 'r', 'i', 's'}; String s = new String(myArray); //Paris
# 4) Streng (char () myArray, int start_index, int count)
Her konstruerer vi et strengobjekt fra tegnmatrisen ved å inkludere antall tegn fra start_index og opp til tellingen.
Eksempel:
char myArray() = {'P', 'a', 'r', 'i', 's'}; String s = new String(myArray, 0,2); //Pa
# 5) String (int () intArray, int offset, int count)
Ovennevnte konstruktør tildeler et nytt strengobjekt fra en int-array. Antall tegn i strengen er definert av forskyvning og antall.
Eksempel:
int() intArray = {65, 69,73,79,85 }; String s = new String (intArray, 0, 5); //AEIOU
# 6) Streng (StringBuffer strbuffer)
I denne konstruktøren konstrueres et nytt String-objekt fra et StringBuffer-objekt.
Eksempel:
StringBuffer strbuffer = new StringBuffer('SoftwareTestingHelp'); String s = new String (strbuffer); //SoftwareTestingHelp
# 7) String (StringBuilder strbuilder)
Et nytt String-objekt opprettes ved hjelp av StringBuilder-objektet.
Eksempel:
StringBuilder strbuilder = new StringBuilder('SoftwareTestingHelp'); String s = new String(strbuilder); // SoftwareTestingHelp
Array Constructors In Java
Arrays bruker konstruktører for å lage og initialisere arrays ved hjelp av et nytt nøkkelord som vist nedenfor.
int() data = new int(4);
Ovennevnte uttalelse initialiserer en matrise med 4 elementer til standard 0.
En annen måte å initialisere matrisen på er gitt nedenfor:
int() data = new int(){2, 4, 6, 8};
Destructor I Java
Så langt har vi sett konstruktører i Java ved hjelp av hvilke vi lager et objekt. Når objektet er ferdig med jobben og ikke lenger er nødvendig, må minnet som er tildelt objektet frigjøres eller distribueres. Dette er jobben til en destruktør i Java.
I Java er Garbage Collector ansvarlig for å frigjøre objektene som ikke lenger er i bruk eller har blitt utilgjengelige. Destruktører i Java kalles sluttbehandlere, og de er ikke-deterministiske slik at vi ikke kan garantere at de blir henrettet.
I Java trenger vi ikke bekymre oss for destruktører. Destruktører har ikke en spesifikk syntaks i Java. Objekter blir ødelagt, men vi kaller ikke destruktor slik vi kaller det i C ++.
Som nevnt ovenfor, gjøres destruktørens jobb av finalisatoren som kalles av Garbage Collector.
Finaliseringsmetoden i Java er demonstrert nedenfor for din referanse.
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'); } }
Produksjon:
I det ovennevnte programmet lager vi et klasseobjekt. Sett den til null, og så kaller vi System.gc () -metoden. Nå er det objektet ikke tilgjengelig, og den avsluttende metoden (destruktoren) kalles implisitt.
Constructor Vs Method I Java
La oss tabellisere noen av forskjellene mellom en konstruktør og en metode i Java.
Konstruktører | Metode |
---|---|
Oppretter et nytt objekt. | Fungerer på et allerede eksisterende objekt. |
En blokk med kode som brukes til å initialisere klassemedlemmene når du lager et objekt. | En samling programmeringsuttalelser som genererer et resultat når de kjøres. |
Brukes til å utføre initialisering av objekter. | En rekke utsagn som kjøres av Java. Kan inneholde en initialiseringsrutine eller ikke. |
Påkalt implisitt. | Må påberopes eksplisitt i et program. |
Påkalt når et nytt objekt opprettes ved hjelp av det nye nøkkelordet. | Påkalt når metoden kalles av programmereren. |
Har samme navn som en klasse. | Det kan ha hvilket som helst navn som er tillatt av programmeringsspråk. |
Har ikke returtype. | Må ha returtype ellers skal den returneres ugyldig. |
En klasse kan ha mange overbelastede konstruktører. | Klassen kan ha overbelastet så vel som forskjellige metoder. |
Det kan ikke arves av barneklassen. | Det kan arves av barneklasse og til og med overstyres. |
ofte stilte spørsmål
Q # 1) Kan konstruktører være private?
Svar: Ja. Konstruktører i Java kan være private. Alle klasser inkludert abstrakte klasser kan ha private konstruktører. Ved å bruke private konstruktører kan vi forhindre at klassen blir instantiert, eller vi kan begrense antall objekter i den klassen.
Q # 2) Hva er bruken av Abstract Class Constructor i Java?
Svar: En abstrakt klassekonstruktør påkalles når vi lager et objekt av den avledede klassen som arver den abstrakte klassen. Foruten hvis abstraktklassen har noen medlemsvariabler, kan vi initialisere dem i den abstrakte klassekonstruktøren.
Q # 3) Kan vi definere en parametrisert konstruktør i en abstrakt klasse i Java?
Svar: Ja, vi kan ha en parameterisert konstruktør i en abstrakt klasse. Så kan vi kalle denne konstruktøren fra den avledede klassen som arvet den abstrakte klassen ved hjelp av super () kall.
Q # 4) Vet du hvorfor det ikke er noen Destructor i Java?
lag en midlertidig falsk e-postadresse
Svar: Java trenger ikke ha en spesifikk destruktør, siden den har sin søppeloppsamler. Denne søppeloppsamleren ødelegger gjenstandene som ikke kan nås og frigjør minnet. En metode som heter finalize er også en del av søppeloppsamleren som utføres ikke-deterministisk og utfører ødeleggerens funksjon som å frigjøre ressurser etc.
Q # 5) Kan abstrakt klasse ha en kropp?
Svar: Nei. En abstrakt klasse kan bare ha metodedeklarasjoner og konstruktører. Metodene er ikke implementert. Klassen som arver denne abstrakte klassen implementerer metodene. Bortsett fra prototype eller erklæringer, kan den også ha spesifikasjoner for synlighet eller tilgang.
Konklusjon
Dette fullfører vår veiledning om konstruktører i Java. Her har vi dekket definisjonen, opprettelsen og typer konstruktører. Vi diskuterte også konstruktøroverbelastning og konstruktorkjetting i Java.
Vi utforsket abstrakte og private konstruktører i Java og lærte hvorfor grensesnitt ikke kan ha konstruktører. Vi så konstruktører som brukes i array- og strengklasser.
Vi diskuterte også destruktorer i Java som utfører funksjonen motsatt av konstruktørene. Konstruktører lager gjenstander mens destruktører ødelegger gjenstander. I Java blir destruktorfunksjonen utført av finalisatoren som utføres under søppeloppsamling.
Dermed har vi ikke en spesifikk destruktor i Java, og vi trenger ikke definere den slik vi gjør i C ++. Vi diskuterte også forskjellene mellom metode og konstruktør. Vi vet at konstruktør ikke er det samme som en metode, men vi kan se på konstruktør som en spesiell metode.
=> Les gjennom Easy Java Training Series.
Anbefalt lesing
- Java Constructor - Klasse, kopi og standardkonstruktører
- C # -konsepter: Constructor, Destructor, Static Class, Struct & Enum
- Java String Array- Veiledning med kodeeksempler
- Java String with String Buffer and String Builder Tutorial
- Java strenglengde () Metode med eksempler
- Java String inneholder () Metodeopplæring med eksempler
- Java-strengindeks Av metode med kodeeksempler
- Java-streng sammenligne metode med programmeringseksempler