Java-konstruktører eller konstruktører i Java er en terminologi som brukes til å konstruere noe i programmene våre. En konstruktør i Java er en spesiell metode som brukes til å initialisere objekter. Konstruktøren kalles når et objekt i en klasse opprettes. Den kan brukes til å angi startverdier for objektattributter.
Hva er konstruktører i Java?
I Java er en konstruktør en blokk med koder som ligner på metoden. Det kalles når en forekomst av klassen opprettes. På tidspunktet for oppkalling av konstruktøren blir minne for objektet tildelt i minnet. Det er en spesiell type metode som brukes til å initialisere objektet. Hver gang et objekt opprettes ved hjelp av nøkkelordet new() kalles minst én konstruktør.
Eksempel på Java Constructor
Nedenfor er implementeringen av Java Constructors:
Java
// Java Program to demonstrate // Constructor import java.io.*; // Driver Class class Geeks { // Constructor Geeks() { super(); System.out.println('Constructor Called'); } // main function public static void main(String[] args) { Geeks geek = new Geeks(); } }> Produksjon
Constructor Called>
Merk: Det er ikke nødvendig å skrive en konstruktør for en klasse. Det er fordi java-kompilatoren oppretter en standardkonstruktør (konstruktør uten argumenter) hvis klassen din ikke har noen.
Hvordan er Java-konstruktører forskjellige fra Java-metoder?
- Konstruktører må ha samme navn som klassen den er definert innenfor, det er ikke nødvendig for metoden i Java.
- Konstruktører returnerer ingen type mens metode(r) har returtype eller tomrom hvis ikke returnerer noen verdi.
- Konstruktører kalles bare én gang på tidspunktet for objektoppretting, mens metode(r) kan kalles et hvilket som helst antall ganger.
La oss nå komme opp med syntaksen for konstruktøren som blir påkalt på tidspunktet for opprettelse av objekt eller instans.
class Geek { ....... // A Constructor Geek() { } ....... } // We can create an object of the above class // using the below statement. This statement // calls above constructor. Geek obj = new Geek();>Den første linjen i en konstruktør er et kall til super() eller this(), (et kall til en konstruktør av en superklasse eller en overbelastet konstruktør), hvis du ikke skriver inn kallet til super i konstruktøren din kompilatoren vil gi deg et ikke-argumentkall til super på den første linjen i koden din, superkonstruktøren må kalles for å lage et objekt:
Hvis du tror klassen din ikke er en underklasse den faktisk er, er hver klasse i Java underklassen til en klasse gjenstand selv om du ikke sier utvider objektet i klassedefinisjonen din.
Behov for konstruktører i Java
Tenk på en boks. Hvis vi snakker om en boksklasse, vil den ha noen klassevariabler (for eksempel lengde, bredde og høyde). Men når det gjelder å lage objektet (dvs. Box vil nå eksistere i datamaskinens minne), så kan en boks være der uten verdi definert for dimensjonene? Svaret er N O .
Så konstruktører brukes til å tilordne verdier til klassevariablene på tidspunktet for objektoppretting, enten eksplisitt gjort av programmereren eller av Java selv (standard konstruktør).
print array i java
Når Java Constructor kalles?
Hver gang et objekt opprettes ved hjelp av en ny() nøkkelord, påkalles minst én konstruktør (det kan være standardkonstruktøren) for å tilordne startverdier til datamedlemmer av samme klasse. Regler for å skrive konstruktører er som følger:
- Konstruktøren(e) til en klasse må ha samme navn som klassenavnet den ligger i.
- En konstruktør i Java kan ikke være abstrakt, endelig, statisk eller synkronisert.
- Tilgangsmodifikatorer kan brukes i konstruktørerklæring for å kontrollere tilgangen, dvs. hvilken annen klasse som kan kalle konstruktøren.
Så langt har vi lært at konstruktører brukes til å initialisere objektets tilstand. Som metoder , inneholder en konstruktør også en samling av setninger (dvs. instruksjoner) som utføres på tidspunktet for objektoppretting.
Typer konstruktører i Java
Nå er det riktig tidspunkt å diskutere konstruktørtypene, så primært er det tre typer konstruktører i Java som er nevnt nedenfor:
- Standard konstruktør
- Parameterisert konstruktør
- Kopier Konstruktør
1. Standard konstruktør i Java
En konstruktør som ikke har noen parametere er kjent som standard konstruktøren. En standard konstruktør er usynlig. Og hvis vi skriver en konstruktør uten argumenter, lager ikke kompilatoren en standard konstruktør. Den tas ut. Den blir overbelastet og kalles en parameterisert konstruktør. Standardkonstruktøren ble endret til den parameteriserte konstruktøren. Men parametrisert konstruktør kan ikke endre standard konstruktør. Standardkonstruktøren kan være implisitt eller eksplisitt. Hvis vi ikke definerer eksplisitt, får vi en implisitt standardkonstruktør. Hvis vi manuelt skriver en konstruktør, blir den implisitte overstyrt.
Eksempel:
Java // Java Program to demonstrate // Default Constructor import java.io.*; // Driver class class GFG { // Default Constructor GFG() { System.out.println('Default constructor'); } // Driver function public static void main(String[] args) { GFG hello = new GFG(); } }> Produksjon
Default constructor>
Merk: Standard konstruktør gir standardverdiene til objektet som 0, null, etc. avhengig av typen.
2. Parameterisert konstruktør i Java
En konstruktør som har parametere er kjent som parameterisert konstruktør. Hvis vi ønsker å initialisere felt i klassen med våre egne verdier, bruk en parameterisert konstruktør.
Eksempel:
i rekkefølgeJava
// Java Program for Parameterized Constructor import java.io.*; class Geek { // data members of the class. String name; int id; Geek(String name, int id) { this.name = name; this.id = id; } } class GFG { public static void main(String[] args) { // This would invoke the parameterized constructor. Geek geek1 = new Geek('Avinash', 68); System.out.println('GeekName :' + geek1.name + ' and GeekId :' + geek1.id); } }> Produksjon
GeekName :Avinash and GeekId :68>
Husk: Returnerer konstruktør noen verdi?
Det er ingen returverdisetninger i konstruktøren, men konstruktøren returnerer gjeldende klasseforekomst. Vi kan skrive 'retur' inne i en konstruktør.
Nå er det viktigste temaet som spiller inn den sterke inkorporeringen av OOPS med konstruktører kjent som konstruktøroverbelastning. Akkurat som metoder, kan vi overbelaste konstruktører for å lage objekter på forskjellige måter. Kompilatoren skiller konstruktører på grunnlag av antall parametere, typer parametere og rekkefølge på parameterne.
Eksempel:
Java // Java Program to illustrate constructor overloading // using same task (addition operation ) for different // types of arguments. import java.io.*; class Geek { // constructor with one argument Geek(String name) { System.out.println('Constructor with one ' + 'argument - String : ' + name); } // constructor with two arguments Geek(String name, int age) { System.out.println( 'Constructor with two arguments : ' + ' String and Integer : ' + name + ' ' + age); } // Constructor with one argument but with different // type than previous.. Geek(long id) { System.out.println( 'Constructor with one argument : ' + 'Long : ' + id); } } class GFG { public static void main(String[] args) { // Creating the objects of the class named 'Geek' // by passing different arguments // Invoke the constructor with one argument of // type 'String'. Geek geek2 = new Geek('Shikhar'); // Invoke the constructor with two arguments Geek geek3 = new Geek('Dharmesh', 26); // Invoke the constructor with one argument of // type 'Long'. Geek geek4 = new Geek(325614567); } }> Produksjon
Constructor with one argument - String : Shikhar Constructor with two arguments : String and Integer : Dharmesh 26 Constructor with one argument : Long : 325614567>
3. Kopier Constructor i Java
I motsetning til andre konstruktører sendes kopikonstruktør med et annet objekt som kopierer tilgjengelige data fra det beståtte objektet til det nyopprettede objektet.
samlinger i java
Merk: I Java er det ingen slik innebygd kopikonstruktør tilgjengelig som i andre programmeringsspråk som C++, i stedet kan vi lage vår egen kopikonstruktør ved å sende objektet til samme klasse til den andre forekomsten (objektet) av klassen.
Eksempel:
Java // Java Program for Copy Constructor import java.io.*; class Geek { // data members of the class. String name; int id; // Parameterized Constructor Geek(String name, int id) { this.name = name; this.id = id; } // Copy Constructor Geek(Geek obj2) { this.name = obj2.name; this.id = obj2.id; } } class GFG { public static void main(String[] args) { // This would invoke the parameterized constructor. System.out.println('First Object'); Geek geek1 = new Geek('Avinash', 68); System.out.println('GeekName :' + geek1.name + ' and GeekId :' + geek1.id); System.out.println(); // This would invoke the copy constructor. Geek geek2 = new Geek(geek1); System.out.println( 'Copy Constructor used Second Object'); System.out.println('GeekName :' + geek2.name + ' and GeekId :' + geek2.id); } }> Produksjon
First Object GeekName :Avinash and GeekId :68 Copy Constructor used Second Object GeekName :Avinash and GeekId :68>
For å vite dypt nede om konstruktører er det to konsepter som er mye brukt som listet nedenfor:
- Konstruktørkjetting
- Kopier Konstruktør
Vanlige spørsmål i Java Constructors
1. Hva er en konstruktør i Java?
En konstruktør i Java er en spesiell metode brukes til å initialisere objekter.
2. Kan en Java-konstruktør være privat?
Ja, en konstruktør kan erklæres privat. En privat konstruktør brukes til å begrense objektoppretting.