Úvod do konstruktoru v jazyce C #

Konstruktor hraje velmi důležitou roli v objektově orientovaném programování. Podívejme se na roli konstruktora v jazyce C # pomocí následujících bodů:

  • Konstruktor je speciální metoda přítomná uvnitř třídy, která je zodpovědná za inicializaci proměnných třídy.
  • Jeho název je stejný jako název třídy.
  • Automaticky se spustí, když vytvoříme instanci třídy.
  • Konstruktor nevrací žádnou hodnotu.
  • Pokud nedefinujeme konstruktor, implicitní konstruktor je vždy poskytován třídou, která se nazývá výchozí konstruktor.

Syntax:

public class Student()
(
//constructor
public Student()
(
//code
)
)

Veřejný student () je zde metoda, která nemá žádný typ návratu, ani neplatná a její název je stejný jako název třídy, tj. „Student“. Tato metoda je tedy konstruktérem této třídy.

Když vytvoříme objekt této třídy pomocí:

Student obj = new Student();

Poté bude proveden kód uvnitř konstruktoru.

Práce konstruktora v C #

1. Konstruktor inicializuje datové členy pro nový objekt. Vyvolá se operátorem 'nový' ihned po přidělení paměti pro nový objekt.

2. Explicitní konstruktéři (konstruktéři definovaní uživatelem) mohou být bez parametrů nebo parametrizováni. Pokud je parametrizován, mohou být hodnoty předané konstruktoru přiřazeny datovým členům třídy.

3. Implicitní konstruktor inicializuje proměnné třídy se stejnou hodnotou, i když vytváříme více instancí této třídy.

Příklad:

Kód:

using System;
public class ConstructorDemo
(
public int num = 10;
public static void Main()
(
ConstructorDemo obj1 = new ConstructorDemo();
ConstructorDemo obj2 = new ConstructorDemo();
ConstructorDemo obj3 = new ConstructorDemo();
Console.WriteLine("obj1.num = "+obj1.num+"\nobj2.num = "+obj2.num
+"\nobj3.num = "+obj3.num);
)
)

Výstup:

Obrazová reprezentace výše uvedeného programu:

4. Explicitní konstruktor s parametry nám umožňuje inicializovat proměnné třídy s jinou hodnotou při každém vytvoření instance této třídy.

Příklad:

Kód:

using System;
public class ConstructorDemo
(
public int num;
//explicit constructor
public ConstructorDemo(int num)
(
this.num = num;
)
public static void Main()
(
ConstructorDemo obj1 = new ConstructorDemo(10);
ConstructorDemo obj2 = new ConstructorDemo(20);
ConstructorDemo obj3 = new ConstructorDemo(30);
Console.WriteLine("obj1.num = "+obj1.num+"\nobj2.num = "+obj2.num
+"\nobj3.num = "+obj3.num);
)
)

Výstup:

Obrazová reprezentace výše uvedeného programu:

Top 5 typů konstruktorů v C #

C # poskytuje pět typů konstruktérů. Jsou to následující:

1. Výchozí konstruktor

  • Konstruktor bez jakéhokoli parametru se nazývá výchozí konstruktor. Pokud to nedefinujeme explicitně, bude to implicitně poskytováno kompilátorem.
  • V takovém případě to můžeme nazvat implicitním konstruktorem. Výchozí nebo implicitní konstruktor inicializuje všechny datové členy třídy se svými výchozími hodnotami, jako jsou všechna numerická pole na nulu a všechna pole řetězců a objektů na null.

Příklad:

Kód:

using System;
public class DefaultConstructor
(
public int num;
public string str;
)
public class Demo
(
public static void Main()
(
DefaultConstructor obj = new DefaultConstructor();
Console.WriteLine("obj.num = "+obj.num+"\nobj.str = "+obj.str);
)
)

Výstup:

2. Parametrizovaný konstruktor

Konstruktor s alespoň jedním parametrem se nazývá Parametrizovaný konstruktor. Parametry konstruktoru lze předat při vytváření instance třídy. To nám umožňuje inicializovat každou instanci třídy s různými hodnotami.

Příklad:

Kód:

using System;
public class ParameterizedConstructor
(
public int num;
public string str;
//parameterized constructor
public ParameterizedConstructor(int num, string str)
(
this.num = num;
this.str = str;
)
)
public class Demo
(
public static void Main()
(
//passing values to constructor while creating instance
ParameterizedConstructor obj = new ParameterizedConstructor(50, "constructor");
Console.WriteLine("obj.num = "+obj.num+"\nobj.str = "+obj.str);
)
)

Výstup:

3. Kopírovat konstruktor

Je to parametrizovaný konstruktor, který bere objekt stejné třídy jako parametr. Zkopíruje hodnotu existujícího objektu (která je předána jako parametr) do nově vytvořeného objektu vytvořeného instancí konstruktoru. Můžeme říci, že kopíruje data jednoho objektu do jiného objektu.

Příklad:

Kód:

using System;
public class CopyConstructor
(
public int num;
public CopyConstructor(int num)
(
this.num = num;
)
//copy constructor
public CopyConstructor(CopyConstructor obj)
(
num = obj.num;
)
)
public class Demo
(
public static void Main()
(
CopyConstructor obj1 = new CopyConstructor(50);
//passing same class's object as parameter
CopyConstructor obj2 = new CopyConstructor(obj1);
Console.WriteLine("Original object:");
Console.WriteLine("obj1.num = "+obj1.num);
Console.WriteLine("\nCopied object:");
Console.WriteLine("obj2.num = "+obj2.num);
)
)

Výstup:

4. Statický konstruktor

  • Lze jej definovat předponou názvu konstruktoru klíčovým slovem. Je implicitně definován kompilátorem (pokud není explicitně definován), pokud třída obsahuje nějakou statickou proměnnou.
  • Je to první blok, který má být proveden ve třídě a bude volán automaticky. Bude proveden pouze jednou bez ohledu na počet instancí třídy. Je bez parametrů a nepřijímá žádný modifikátor přístupu.

Příklad:

Kód:

using System;
public class StaticConstructor
(
//static constructor
static StaticConstructor()
(
Console.WriteLine("Static constructor executed");
)
public static void Display()
(
Console.WriteLine("\nDisplay method executed");
)
)
public class Demo
(
public static void Main()
(
StaticConstructor.Display();
)
)

Výstup:

5. Soukromý konstruktér

Konstruktor vytvořený se soukromým specifikátorem se nazývá soukromý konstruktor. Nemůžeme vytvořit instanci třídy, pokud obsahuje pouze soukromý konstruktor a neumožňuje z této třídy odvodit jiné třídy. Používá se ve třídě, která obsahuje pouze statické členy.

Příklad:

Kód:

using System;
public class PrivateConstructor
(
public static int num = 100;
//private constructor
private PrivateConstructor()
(
)
)
public class Demo
(
public static void Main()
(
//PrivateConstructor obj = new PrivateConstructor(); //Error
Console.WriteLine("num = "+PrivateConstructor.num);
)
)

Výstup:

Závěr

Pokud definujeme jakýkoli typ konstruktoru ve třídě, nebude existovat žádný implicitní konstruktor ve třídě poskytované kompilátorem. Stejně jako metody mohou být parametrizovaní konstruktéři přetíženi různými počty parametrů. Konstruktory implicitně definované kompilátorem jsou vždy veřejné.

Doporučený článek

Toto je průvodce konstruktorem v jazyce C #. Zde diskutujeme typy konstruktoru v C # a jeho práci spolu s implementací a výstupem kódu. Další informace naleznete také v dalších navrhovaných článcích -

  1. Konstruktor v JavaScriptu a typech
  2. Co je generátor náhodných čísel v C #?
  3. Konstruktor v C ++ a typy
  4. Kopírovat konstruktor v C # (příklady)
  5. Statický konstruktor v Javě | Pracovní | Aplikace

Kategorie: