logo

Què és l'encadenament de constructors a Java?

A Java, encadenament del constructor és una seqüència d'invocació constructors en inicialitzar un objecte. S'utilitza quan volem invocar una sèrie de constructors, un darrere l'altre utilitzant només una instància. En aquesta secció, parlarem encadenant de constructors a Java en detall amb exemples adequats. Fem una ullada ràpida què és un constructor en Java.

Constructor

En Java , un constructor és el mateix que un mètode però l'única diferència és que el constructor té el mateix nom que el nom de la classe. S'utilitza per crear una instància de la classe. Es crida automàticament quan creem un objecte de la classe. No té cap tipus de retorn. Recordeu que un constructor no pot ser abstracte , final , sincronitzat , i estàtica . No podem anul·lar un constructor.

Hi ha dos tipus de constructors a Java:

  • Constructor predeterminat (també conegut com a constructor sense argument)
  • Constructor parametritzat

Encadenat de constructors

A la cadena de constructors, s'anomena un constructor des d'un altre constructor de la mateixa classe com aquest procés es coneix encadenament del constructor. Es produeix per herència. Quan creem una instància d'una classe derivada, primer s'invoquen tots els constructors de la classe heretada (classe base), després s'invoca el constructor de la classe que crida (classe derivada).

Podem aconseguir l'encadenament del constructor de dues maneres:

unions i tipus d'unions
    Dins de la mateixa classe:Si els constructors pertanyen a la mateixa classe, fem servir això De la classe base:Si el constructor pertany a classes diferents (classes pare i classes fills), fem servir el súper paraula clau per cridar el constructor des de la classe base.

Recordeu que canviar l'ordre del constructor no afecta la sortida.

Què és l'encadenament de constructors a Java

La necessitat de l'encadenament de constructors

Suposem que hi ha cinc tasques a realitzar. Hi ha dues maneres de realitzar aquestes tasques, implementar totes les tasques en un únic constructor o crear tasques separades en un únic constructor.

Mitjançant el mecanisme d'encadenament del constructor, podem implementar diverses tasques en un únic constructor. Per tant, sempre que ens enfrontem a aquest tipus de problemes, hauríem d'utilitzar l'encadenament de constructors. Podem fer que el programa sigui més llegible i entenedor utilitzant l'encadenament del constructor.

matriu dinàmica java

Regles d'encadenament de constructors

  • Una expressió que utilitza això La paraula clau ha de ser la primera línia del constructor.
  • Ordreno importa en l'encadenament del constructor.
  • Hi ha d'haver almenys un constructor que no utilitzi això

Constructor Crida a un altre Constructor

La crida del constructor es pot fer de dues maneres:

    Mitjançant aquesta paraula clau ():S'utilitza quan volem cridar al constructor de classe actual dins de la mateixa classe.Mitjançant l'ús de la paraula clau super():S'utilitza quan volem cridar al constructor de la superclasse des de la classe base.

Nota: En el mateix bloc constructor, no podem utilitzar this() i super() simultàniament.

Entendrem aquests dos conceptes a través de programes Java.

Exemples d'encadenament de constructors

Cridant al constructor de classe actual

Fem servir això () paraula clau si volem cridar al constructor de classe actual dins de la mateixa classe. L'ús d'aquest() és obligatori perquè JVM mai ho poseu automàticament com el super() paraula clau. Tingueu en compte que this() ha de ser la primera línia del constructor. Hi ha d'existir almenys un constructor sense aquesta paraula clau (). .

Sintaxi:

 this(); or this(parameters list); 

Per exemple:

 this(); this('Javatpoint'); 

Creem un programa Java i cridem al constructor de classe actual.

ConstructorChain.java

 public class ConstructorChain { //default constructor ConstructorChain() { this('Javatpoint'); System.out.println('Default constructor called.'); } //parameterized constructor ConstructorChain(String str) { System.out.println('Parameterized constructor called'); } //main method public static void main(String args[]) { //initializes the instance of example class ConstructorChain cc = new ConstructorChain(); } } 

Sortida:

Què és l'encadenament de constructors a Java

A l'exemple anterior, hem creat una instància de la classe sense passar cap paràmetre. Primer crida al constructor predeterminat i el constructor predeterminat redirigeix ​​la trucada al parametrat a causa d'això (). Les sentències dins del constructor parametritzat s'executen i tornen al constructor predeterminat. Després d'això, s'executen la resta de les declaracions del constructor predeterminat i l'objecte s'inicia amb èxit. La següent és la seqüència de crida del constructor:

 ConstructorChain cc = new ConstructorChain(); -> ConstructorChain() -> ConstructorChain(String str) -> System.out.println() -> ConstructorChain() -> System.out.println() 

Trucant a Super Class Constructor

De vegades, hem de cridar al constructor de la superclasse (classe pare) des de la classe fill (classe derivada) en aquests casos, utilitzem la paraula clau super() al constructor de classes derivades. És opcional escriure super() perquè JVM ho posa automàticament. Sempre s'ha d'escriure a la primera línia. Obtenim un error de sintaxi si intentem cridar un constructor de superclasse a la classe fill.

l'actriu índia rani mukerji

Sintaxi:

 super(); or super(Parameter List); 

super(): Crida al constructor sense argument o predeterminat de la superclasse.

valor de cadena de

super (paràmetres): Invoca el constructor parametritzat de la superclasse.

Recordeu que el constructor de la superclasse no es pot heretar a la subclasse. Es pot cridar des del constructor de subclasses utilitzant la paraula clau super.

Creem un programa Java i implementem l'encadenament del constructor en una classe heretada.

ConstructorChaining.java

 //parent class or base class class Demo { //base class default constructor Demo() { this(80, 90); System.out.println('Base class default constructor called'); } //base class parameterized constructor Demo(int x, int y) { System.out.println('Base class parameterized constructor called'); } } //derived class or child class class Prototype extends Demo { //derived class default constructor Prototype() { this('Java', 'Python'); System.out.println('Derived class default constructor called'); } //derived class parameterized constructor Prototype(String str1, String str2) { super(); System.out.println('Derived class parameterized constructor called'); } } public class ConstructorChaining { //main method public static void main(String args[]) { //initializes the instance of example class Prototype my_example = new Prototype(); } } 

Sortida:

Què és l'encadenament de constructors a Java