I Java, konstruktörskedja är en sekvens av anrop konstruktörer vid initialisering av ett objekt. Det används när vi vill anropa ett antal konstruktörer, en efter en genom att endast använda en instans. I det här avsnittet kommer vi att diskutera konstruktörskedja i Java i detalj med korrekta exempel. Låt oss ta en snabb titt på vad är en konstruktor i Java.
Konstruktör
I Java , en konstruktor är samma som en metod men den enda skillnaden är att konstruktorn har samma namn som klassnamnet. Den används för att skapa en instans av klassen. Det anropas automatiskt när vi skapar ett objekt i klassen. Den har ingen returtyp. Kom ihåg att en konstruktor inte kan vara det abstrakt , slutlig , synkroniserad , och statisk . Vi kan inte åsidosätta en konstruktör.
Det finns två typer av konstruktörer i Java:
- Default Constructor (även känd som en no-argument constructor)
- Parameteriserad konstruktör
Konstruktörskedja
I konstruktörskedjan anropas en konstruktör från en annan konstruktör i samma klass som denna process är känd som konstruktörskedja. Det sker genom arv. När vi skapar en instans av en härledd klass, anropas först alla konstruktörer av den ärvda klassen (basklassen), efter det anropas konstruktorn för den anropande klassen (derived class).
Vi kan åstadkomma konstruktörskedja på två sätt:
java print
Kom ihåg att ändra ordningen på konstruktorn inte påverkar utdata.
Behovet av konstruktörskedja
Anta att det finns fem uppgifter att utföra. Det finns två sätt att utföra dessa uppgifter, antingen implementera alla uppgifter i en enda konstruktor eller skapa separata uppgifter i en enda konstruktor.
Genom att använda konstruktorkedjemekanismen kan vi implementera flera uppgifter i en enda konstruktör. Så närhelst vi möter sådana typer av problem, bör vi använda konstruktorkedja. Vi kan göra programmet mer läsbart och begripligt genom att använda constructor chaining.
ett exempel på ett OS med öppen källkod är
Regler för konstruktörskedja
- Ett uttryck som använder detta nyckelordet måste vara den första raden i konstruktorn.
- Det måste finnas minst en konstruktör som inte använder detta
Constructor Ringer från en annan konstruktör
Anropet av konstruktorn kan göras på två sätt:
Notera: I samma konstruktorblock kan vi inte använda this() och super() samtidigt.
Låt oss förstå dessa två begrepp genom Java-program.
Exempel på konstruktionskedja
Ringer Current Class Constructor
Vi använder detta() nyckelord om vi vill anropa den aktuella klasskonstruktorn inom samma klass. Användningen av this() är obligatorisk eftersom JVM lägg det aldrig automatiskt som super() nyckelord. Observera att detta() måste vara den första raden i konstruktorn. Det måste finnas minst en konstruktör utan detta() nyckelord .
Syntax:
this(); or this(parameters list);
Till exempel:
this(); this('Javatpoint');
Låt oss skapa ett Java-program och anropa den nuvarande klasskonstruktorn.
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(); } }
Produktion:
I exemplet ovan har vi skapat en instans av klassen utan att skicka någon parameter. Den anropar först standardkonstruktorn och standardkonstruktorn omdirigerar anropet till den parametriserade på grund av this(). Satserna inuti den parametriserade konstruktorn exekveras och återgår till standardkonstruktorn. Därefter exekveras resten av satserna i standardkonstruktorn och objektet initieras framgångsrikt. Följande är anropssekvensen för konstruktorn:
ConstructorChain cc = new ConstructorChain(); -> ConstructorChain() -> ConstructorChain(String str) -> System.out.println() -> ConstructorChain() -> System.out.println()
Ringer Super Class Constructor
Ibland måste vi anropa superklassen (förälderklass) konstruktorn från den underordnade klassen (derived class) i sådana fall använder vi nyckelordet super() i den härledda klasskonstruktorn. Det är valfritt att skriva super() eftersom JVM automatiskt lägger det. Det ska alltid skrivas på första raden. Vi får ett syntaxfel om vi försöker anropa en superklasskonstruktor i barnklassen.
välj från flera tabeller i sql
Syntax:
super(); or super(Parameter List);
super(): Den anropar no-argument- eller standardkonstruktorn för superklassen.
binärt sökträd
super(parametrar): Den anropar den parametriserade superklassens konstruktor.
Kom ihåg att superklasskonstruktorn inte kan ärvas i underklassen. Det kan anropas från underklasskonstruktorn genom att använda supernyckelordet.
Låt oss skapa ett Java-program och implementera konstruktorkedja i en ärvd klass.
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(); } }
Produktion: