logo

Konstruktory Java

Java konstruktory nebo konstruktory v Javě je terminologie používaná ke konstrukci něčeho v našich programech. Konstruktor v Javě je a speciální metoda který se používá k inicializaci objektů. Konstruktor je volán, když je vytvořen objekt třídy. Lze jej použít k nastavení počátečních hodnot atributů objektu.

Co jsou konstruktory v Javě?

V Javě je konstruktor blok kódů podobný metodě. Je volána, když je vytvořena instance třídy. V době volání konstruktoru je v paměti alokována paměť pro objekt. Jedná se o speciální typ metody, která se používá k inicializaci objektu. Pokaždé, když je objekt vytvořen pomocí klíčového slova new(), je volán alespoň jeden konstruktor.

Příklad Java Constructor

Níže je uvedena implementace konstruktorů Java:



Jáva
// 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();  } }>

Výstup
Constructor Called>

Poznámka: Není nutné psát konstruktor pro třídu. Je to proto, že kompilátor java vytvoří výchozí konstruktor (konstruktor bez argumentů), pokud vaše třída žádné nemá.

Jak se konstruktory Java liší od metod Java?

  • Konstruktory musí mít stejný název jako třída, ve které je definován, pro metodu v Javě to není nutné.
  • Konstruktory nevrací žádný typ, zatímco metoda(y) mají návratový typ nebo prázdnota pokud nevrátí žádnou hodnotu.
  • Konstruktory jsou volány pouze jednou při vytváření objektu, zatímco metoda(y) může být volána kolikrát.

Nyní pojďme přijít se syntaxí konstruktoru, který je vyvolán v době vytváření objektu nebo instance.

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

První řádek konstruktoru je volání super() nebo this(), (volání konstruktoru nadtřídy nebo přetíženého konstruktoru), pokud do konstruktoru nezadáte volání super kompilátor vám poskytne neargumentové volání super na prvním řádku vašeho kódu, k vytvoření objektu musí být zavolán konstruktor super:

Pokud si myslíte, že vaše třída není podtřídou, ale ve skutečnosti je, každá třída v Javě je podtřídou třídy objekt i když v definici třídy neřeknete extends object.

Potřeba konstruktérů v Javě

Myslete na krabici. Pokud mluvíme o třídě boxu, pak bude mít nějaké proměnné třídy (řekněme délku, šířku a výšku). Ale když dojde na vytvoření jeho objektu (tj. Box bude nyní existovat v paměti počítače), pak tam může být krabice bez definované hodnoty pro její rozměry? Odpověď je N Ó .
Konstruktory se tedy používají k přiřazení hodnot proměnným třídy v době vytváření objektu, buď explicitně provedené programátorem nebo samotnou Java (výchozí konstruktor).

pole objektů v Javě

Když se nazývá Java Constructor?

Pokaždé, když je objekt vytvořen pomocí a Nový() klíčového slova, je vyvolán alespoň jeden konstruktor (může to být výchozí konstruktor) k přiřazení počátečních hodnot k datové členy stejné třídy. Pravidla pro psaní konstruktorů jsou následující:

  • Konstruktor(y) třídy musí mít stejný název jako název třídy, ve které se nachází.
  • Konstruktor v Javě nemůže být abstraktní, konečný, statický nebo synchronizovaný.
  • Modifikátory přístupu lze použít v deklaraci konstruktoru k řízení jeho přístupu, tj. která jiná třída může volat konstruktor.

Zdaleka jsme se naučili, že konstruktory se používají k inicializaci stavu objektu. Jako metody , konstruktor také obsahuje kolekci příkazů (tj. instrukcí), které se provádějí v okamžiku vytvoření objektu.

řazení seznamu polí

Typy konstruktorů v Javě

Nyní je správný čas diskutovat o typech konstruktoru, takže v Javě jsou primárně uvedeny tři typy konstruktorů:

  • Výchozí konstruktor
  • Parametrizovaný konstruktor
  • Kopírovat konstruktor

1. Výchozí konstruktor v Javě

Konstruktor, který nemá žádné parametry, se nazývá výchozí konstruktor. Výchozí konstruktor je neviditelný. A pokud napíšeme konstruktor bez argumentů, kompilátor nevytvoří výchozí konstruktor. Je vyjmuta. Je přetížen a nazývá se parametrizovaný konstruktor. Výchozí konstruktor se změnil na parametrizovaný konstruktor. Ale parametrizovaný konstruktor nemůže změnit výchozí konstruktor. Výchozí konstruktor může být implicitní nebo explicitní. Pokud nedefinujeme explicitně, dostaneme implicitní výchozí konstruktor. Pokud ručně napíšeme konstruktor, ten implicitní je přepsán.

Příklad:

Jáva
// 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();  } }>

Výstup
Default constructor>

Poznámka: Výchozí konstruktor poskytuje výchozí hodnoty objektu jako 0, null atd. v závislosti na typu.

2. Parametrizovaný konstruktor v Javě

Konstruktor, který má parametry, se nazývá parametrizovaný konstruktor. Pokud chceme inicializovat pole třídy s vlastními hodnotami, pak použijte parametrizovaný konstruktor.

Příklad:

Jáva
// 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);  } }>

Výstup
GeekName :Avinash and GeekId :68>

Pamatujte: Vrátí konstruktor nějakou hodnotu?

V konstruktoru nejsou žádné příkazy návratové hodnoty, ale konstruktor vrací aktuální instanci třídy. Do konstruktoru můžeme napsat „return“.

Nejdůležitějším tématem, které nyní vstupuje do hry, je silné začlenění OOPS s konstruktory známými jako přetěžování konstruktorů. Stejně jako metody můžeme přetěžovat konstruktory pro vytváření objektů různými způsoby. Kompilátor rozlišuje konstruktory na základě počtu parametrů, typů parametrů a pořadí parametrů.

Příklad:

Jáva
// 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);  } }>

Výstup
Constructor with one argument - String : Shikhar Constructor with two arguments : String and Integer : Dharmesh 26 Constructor with one argument : Long : 325614567>

3. Zkopírujte konstruktor v Javě

Na rozdíl od jiných konstruktorů je kopírovací konstruktor předán s dalším objektem, který zkopíruje dostupná data z předávaného objektu do nově vytvořeného objektu.

Poznámka: V Javě není k dispozici žádný takový vestavěný kopírovací konstruktor jako v jiných programovacích jazycích, jako je C++, místo toho můžeme vytvořit vlastní kopírovací konstruktor předáním objektu stejné třídy jiné instanci (objektu) třídy.

Příklad:

připravit se na testovací mockito
Jáva
// 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);  } }>

Výstup
First Object GeekName :Avinash and GeekId :68 Copy Constructor used Second Object GeekName :Avinash and GeekId :68>

Chcete-li vědět hluboko o konstruktérech, existují dva široce používané koncepty, jak je uvedeno níže:

  • Řetězení konstruktorů
  • Kopírovat konstruktor

Nejčastější dotazy v Java Constructors

1. Co je konstruktor v Javě?

Konstruktor v Javě je a speciální metoda slouží k inicializaci objektů.

2. Může být konstruktor Java soukromý?

Ano, konstruktor může být prohlášen za soukromý. Soukromý konstruktor se používá k omezení vytváření objektů.