logo

Java-konstruktörer

Java-konstruktörer eller konstruktörer i Java är en terminologi som används för att konstruera något i våra program. En konstruktör i Java är en speciell metod som används för att initiera objekt. Konstruktorn anropas när ett objekt i en klass skapas. Den kan användas för att ställa in initiala värden för objektattribut.

Vad är konstruktörer i Java?

I Java är en konstruktor ett block med koder som liknar metoden. Det kallas när en instans av klassen skapas. Vid tidpunkten för anrop av konstruktorn allokeras minnet för objektet i minnet. Det är en speciell typ av metod som används för att initiera objektet. Varje gång ett objekt skapas med nyckelordet new() anropas minst en konstruktor.

Exempel på Java Constructor

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

Produktion
Constructor Called>

Notera: Det är inte nödvändigt att skriva en konstruktor för en klass. Det beror på att java-kompilatorn skapar en standardkonstruktor (konstruktor utan argument) om din klass inte har några.

Hur skiljer sig Java-konstruktörer från Java-metoder?

  • Konstruktörer måste ha samma namn som klassen inom vilken den är definierad, det är inte nödvändigt för metoden i Java.
  • Konstruktörer returnerar inte någon typ medan metod(er) har returtypen eller tomhet om inte returnerar något värde.
  • Konstruktörer anropas endast en gång när objekt skapas medan metoder kan anropas hur många gånger som helst.

Låt oss nu komma på syntaxen för konstruktorn som anropas när objektet eller instansen skapas.

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örsta raden i en konstruktor är ett anrop till super() eller this(), (ett anrop till en konstruktör av en superklass eller en överbelastad konstruktor), om du inte skriver in anropet till super i din konstruktor kompilatorn kommer att förse dig med ett icke-argumentanrop till super på den första raden i din kod, superkonstruktören måste anropas för att skapa ett objekt:

Om du tror att din klass inte är en underklass som den faktiskt är, är varje klass i Java underklassen till en klass objekt även om du inte säger extends object i din klassdefinition.

Behov av konstruktörer i Java

Tänk på en box. Om vi ​​talar om en boxklass kommer den att ha några klassvariabler (säg längd, bredd och höjd). Men när det kommer till att skapa dess objekt (dvs Box kommer nu att finnas i datorns minne), kan då en box finnas där utan något värde definierat för dess dimensioner? Svaret är N O .
Så konstruktörer används för att tilldela värden till klassvariablerna vid tidpunkten för objektskapandet, antingen uttryckligen av programmeraren eller av Java själv (standardkonstruktör).

funktioner i c

När Java Constructor anropas?

Varje gång ett objekt skapas med hjälp av en ny() nyckelord, anropas minst en konstruktor (det kan vara standardkonstruktorn) för att tilldela initiala värden till datamedlemmar av samma klass. Regler för att skriva konstruktörer är följande:

  • Konstruktören/konstruktörerna för en klass måste ha samma namn som klassnamnet där den finns.
  • En konstruktor i Java kan inte vara abstrakt, slutgiltig, statisk eller synkroniserad.
  • Åtkomstmodifierare kan användas i konstruktordeklaration för att kontrollera dess åtkomst, dvs vilken annan klass som kan anropa konstruktorn.

Så överlägset har vi lärt oss att konstruktörer används för att initiera objektets tillstånd. Tycka om metoder , innehåller en konstruktor också en samling satser (dvs instruktioner) som exekveras vid tidpunkten för objektskapandet.

Typer av konstruktörer i Java

Nu är det rätt tid att diskutera typerna av konstruktören, så i första hand finns det tre typer av konstruktörer i Java som nämns nedan:

  • Standardkonstruktör
  • Parameteriserad konstruktör
  • Kopiera konstruktör

1. Standardkonstruktör i Java

En konstruktor som inte har några parametrar kallas standardkonstruktorn. En standardkonstruktor är osynlig. Och om vi skriver en konstruktor utan argument, skapar inte kompilatorn en standardkonstruktor. Den tas ut. Den överbelastas och kallas en parametriserad konstruktor. Standardkonstruktorn ändrades till den parametriserade konstruktorn. Men parametriserad konstruktor kan inte ändra standardkonstruktorn. Standardkonstruktorn kan vara implicit eller explicit. Om vi ​​inte definierar explicit får vi en implicit standardkonstruktor. Om vi ​​manuellt skriver en konstruktor åsidosätts den implicita.

Exempel:

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>

Notera: Default constructor tillhandahåller standardvärdena för objektet som 0, null, etc. beroende på typ.

2. Parameteriserad konstruktör i Java

En konstruktor som har parametrar kallas parameteriserad konstruktor. Om vi ​​vill initiera fält i klassen med våra egna värden, använd en parametriserad konstruktor.

Exempel:

läsa en csv-fil i java
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>

Kom ihåg: Returnerar konstruktorn något värde?

Det finns inga returvärdessatser i konstruktorn, men konstruktorn returnerar den aktuella klassinstansen. Vi kan skriva 'retur' inuti en konstruktor.

Nu är det viktigaste ämnet som spelar in den starka integrationen av OOPS med konstruktörer som kallas konstruktoröverbelastning. Precis som metoder kan vi överbelasta konstruktörer för att skapa objekt på olika sätt. Kompilatorn differentierar konstruktörer på basis av antalet parametrar, typer av parametrar och ordningen på parametrarna.

Exempel:

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. Kopiera Constructor i Java

Till skillnad från andra konstruktörer skickas kopieringskonstruktorn med ett annat objekt som kopierar tillgänglig data från det skickade objektet till det nyskapade objektet.

konvertera sträng till datum

Notera: I Java finns det ingen sådan inbyggd kopiakonstruktor tillgänglig som i andra programmeringsspråk som C++, istället kan vi skapa vår egen kopiakonstruktor genom att skicka objektet i samma klass till den andra instansen (objektet) av klassen.

Exempel:

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>

För att veta på djupet om konstruktörer finns det två begrepp som använts i stor utsträckning enligt listan nedan:

  • Konstruktörskedja
  • Kopiera konstruktör

Vanliga frågor i Java Constructors

1. Vad är en konstruktor i Java?

En konstruktör i Java är en speciell metod används för att initiera objekt.

2. Kan en Java-konstruktör vara privat?

Ja, en konstruktör kan förklaras privat. En privat konstruktör används för att begränsa objektskapandet.