logo

Java konstruktører

Java-konstruktører eller -konstruktører i Java er en terminologi, der bruges til at konstruere noget i vores programmer. En konstruktør i Java er en speciel metode der bruges til at initialisere objekter. Konstruktøren kaldes, når et objekt i en klasse oprettes. Den kan bruges til at indstille startværdier for objektattributter.

Hvad er konstruktører i Java?

I Java er en konstruktør en blok af koder, der ligner metoden. Det kaldes, når en forekomst af klassen oprettes. På tidspunktet for kald af konstruktøren allokeres hukommelsen til objektet i hukommelsen. Det er en speciel type metode, der bruges til at initialisere objektet. Hver gang et objekt oprettes ved hjælp af nøgleordet new() kaldes mindst én konstruktør.

Eksempel på Java Constructor

Nedenfor er implementeringen af ​​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();  } }>

Produktion
Constructor Called>

Bemærk: Det er ikke nødvendigt at skrive en konstruktør til en klasse. Det er fordi java-kompileren opretter en standardkonstruktør (konstruktør uden argumenter), hvis din klasse ikke har nogen.

Hvordan adskiller Java-konstruktører sig fra Java-metoder?

  • Konstruktører skal have samme navn som den klasse, den er defineret i, det er ikke nødvendigt for metoden i Java.
  • Konstruktører returnerer ikke nogen type, mens metode(r) har returtypen eller ugyldig hvis ikke returnerer nogen værdi.
  • Konstruktører kaldes kun én gang på tidspunktet for objektoprettelse, mens metode(r) kan kaldes et vilkårligt antal gange.

Lad os nu komme med syntaksen for konstruktøren, der påkaldes på tidspunktet for oprettelse af 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 linje i en konstruktør er et kald til super() eller this(), (et kald til en konstruktør af en superklasse eller en overbelastet konstruktør), hvis du ikke skriver kaldet til super i din konstruktør compiler vil give dig et ikke-argumentationskald til super på den første linje i din kode, superkonstruktøren skal kaldes for at oprette et objekt:

Hvis du tror, ​​at din klasse ikke er en underklasse, den faktisk er, er hver klasse i Java underklassen af ​​en klasse objekt selvom du ikke siger udvider objekt i din klassedefinition.

Behov for konstruktører i Java

Tænk på en kasse. Hvis vi taler om en boksklasse, vil den have nogle klassevariable (f.eks. længde, bredde og højde). Men når det kommer til at skabe sit objekt (dvs. Box vil nu eksistere i computerens hukommelse), kan en boks så være der uden nogen værdi defineret for dens dimensioner? Svaret er N O .
Så konstruktører bruges til at tildele værdier til klassevariablerne på tidspunktet for objektoprettelse, enten eksplicit udført af programmøren eller af Java selv (standard konstruktør).

streng tokenizer java

Hvornår kaldes Java Constructor?

Hver gang et objekt oprettes ved hjælp af en ny() nøgleord, kaldes mindst én konstruktør (det kunne være standardkonstruktøren) for at tildele initialværdier til data medlemmer af samme klasse. Regler for skrivekonstruktører er som følger:

  • Konstruktøren(e) af en klasse skal have samme navn som klassenavnet, hvori den ligger.
  • En konstruktør i Java kan ikke være abstrakt, endelig, statisk eller synkroniseret.
  • Adgangsmodifikatorer kan bruges i konstruktørdeklaration til at kontrollere dens adgang, dvs. hvilken anden klasse kan kalde konstruktøren.

Så langt har vi lært, at konstruktører bruges til at initialisere objektets tilstand. Synes godt om metoder , indeholder en konstruktør også en samling af sætninger (dvs. instruktioner), der udføres på tidspunktet for objektoprettelse.

Typer af konstruktører i Java

Nu er det rigtige tidspunkt at diskutere typerne af konstruktøren, så primært er der tre typer konstruktører i Java, der er nævnt nedenfor:

  • Standard konstruktør
  • Parametriseret konstruktør
  • Kopi konstruktør

1. Standard konstruktør i Java

En konstruktør, der ikke har nogen parametre, er kendt som standard konstruktøren. En standardkonstruktør er usynlig. Og hvis vi skriver en konstruktør uden argumenter, opretter compileren ikke en standardkonstruktør. Den tages ud. Den bliver overbelastet og kaldes en parameteriseret konstruktør. Standardkonstruktøren blev ændret til den parametriserede konstruktør. Men parametriseret konstruktør kan ikke ændre standardkonstruktøren. Standardkonstruktøren kan være implicit eller eksplicit. Hvis vi ikke definerer eksplicit, får vi en implicit standardkonstruktør. Hvis vi manuelt skriver en konstruktør, tilsidesættes den implicitte.

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();  } }>

Produktion
Default constructor>

Bemærk: Standard konstruktør giver standardværdierne til objektet som 0, null osv. afhængigt af typen.

2. Parametriseret konstruktør i Java

En konstruktør, der har parametre, er kendt som parameteriseret konstruktør. Hvis vi ønsker at initialisere felter i klassen med vores egne værdier, så brug en parameteriseret konstruktør.

Eksempel:

i orden
Java
// 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);  } }>

Produktion
GeekName :Avinash and GeekId :68>

Husk: Returnerer konstruktør nogen værdi?

Der er ingen returværdisætninger i konstruktøren, men konstruktøren returnerer den aktuelle klasseinstans. Vi kan skrive 'retur' inde i en konstruktør.

Nu er det vigtigste emne, der kommer i spil, den stærke inkorporering af OOPS med konstruktører kendt som konstruktøroverbelastning. Ligesom metoder kan vi overbelaste konstruktører til at skabe objekter på forskellige måder. Compileren differentierer konstruktører på basis af antallet af parametre, typer af parametre og rækkefølgen af ​​parametrene.

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);  } }>

Produktion
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 modsætning til andre konstruktører overføres kopikonstruktøren med et andet objekt, som kopierer de tilgængelige data fra det overførte objekt til det nyoprettede objekt.

samlinger i java

Bemærk: I Java er der ingen sådan indbygget kopikonstruktør tilgængelig som i andre programmeringssprog såsom C++, i stedet kan vi oprette vores egen kopikonstruktør ved at sende objektet fra den samme klasse til den anden instans(objekt) af 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);  } }>

Produktion
First Object GeekName :Avinash and GeekId :68 Copy Constructor used Second Object GeekName :Avinash and GeekId :68>

For at vide inderst inde om konstruktører er der to begreber, der er blevet meget brugt som anført nedenfor:

  • Konstruktør kæde
  • Kopi konstruktør

Ofte stillede spørgsmål i Java Constructors

1. Hvad er en konstruktør i Java?

En konstruktør i Java er en speciel metode bruges til at initialisere objekter.

2. Kan en Java-konstruktør være privat?

Ja, en konstruktør kan erklæres privat. En privat konstruktør bruges til at begrænse oprettelse af objekter.