Čo je abstraktná trieda v C #?

Slovo abstrakt znamená myšlienku alebo nápad, ktorý nemá žiadnu fyzickú podobu, ale slúži ako základ pre iné veci. To isté platí aj o koncepte abstraktnej triedy. V tomto článku by sme diskutovali o abstraktných triedach v jazyku C #. Abstraktná trieda je špeciálna trieda v C #, ktorú nemožno inštancovať, tj nemôžete vytvoriť objekty abstraktnej triedy. Účelom abstraktnej triedy je poskytnúť kostrovú štruktúru, z ktorej môžu pochádzať ďalšie triedy. Abstraktné triedy nemajú vlastnú implementáciu. Vyžadujú, aby vývojári a programátori vychádzali z abstraktnej triedy a aby vychádzali z kostrovej štruktúry, tj napísali ich implementáciu. Abstraktná trieda môže mať aj deklarácie abstraktných metód vo vnútri. Tieto metódy opäť nemôžu mať žiadne definície.

Syntax deklarovania abstraktných tried a metód spočíva v umiestnení abstraktu kľúčového slova pred deklaráciu. Tak jednoduché.

syntaxe:

abstract class ClassName
(
public abstract void MethodName();
)

Pamätajte, že abstraktné metódy nemôžu mať definície. Deklarácie abstraktných metód tak končia bodkočiarkou. Môžu byť vyhlásené. Definície musia byť uvedené v odvodených ne abstraktných triedach.

Ako abstraktná trieda funguje v C #?

Abstraktné kľúčové slovo inštruuje kompilátor, že trieda je kostrovou štruktúrou základnej triedy, ktorá sa má implementovať do odvodených tried. Ak kompilátor nájde nejakú triedu odvodenú z abstraktnej základnej triedy, skontroluje, či všetky abstraktné metódy a vlastnosti sú v odvodenej triede prepísané a implementované.

Abstraktné trieda vs rozhranie

Teraz sa možno pýtate, čo to všetko a aké rozhranie robí. Ako sa teda abstraktná trieda líši od rozhrania?

Pochopme to príkladom. Povedzme, že prevádzkujeme vydavateľskú spoločnosť a najali sme niekoľko redaktorov, aby napísali stĺpce pre náš časopis. Predpokladajme, že sú odborníkmi v rôznych žánroch, píšu články, ktoré sa majú uverejniť v konkrétny deň v týždni, a všetci sú najatí za rovnakú mzdu.

Definujme pre našich redaktorov abstraktnú triedu zamestnancov.

kód:

abstract class EmployeeEditors
(
public abstract void Genre();
public abstract string PublishDay();
public int Payment()
(
Console.Write(“Monthly salary is (0)$.”, 1000);
)
)

Môžeme ľahko implementovať spôsob platby s vedomím, že by to bolo rovnaké pre všetkých. Ostatné dve metódy boli vyhlásené za abstraktné, aby ich implementovala odvodená trieda. Dalo by sa vyhlásiť normálnu triedu pre každého editora odvodenú z abstraktnej triedy a potom implementovať abstraktné metódy na definovanie žánrov a dní. Teraz predpokladajme, že plat každého editora je tiež odlišný. Jedným zo spôsobov, ako zmeniť náš kód, je vyhlásiť spôsob platby za abstraktný. Iným spôsobom by bolo vyhlásenie celého EmployeeEditor za rozhranie a úplná sloboda dedenia tried.

Public interface EmployeeEditors
(
public abstract void Genre();
public abstract string PublishDay();
public abstract int Payment();
)

Preto je abstraktná trieda základnou triedou, na ktorej môžu ostatné triedy stavať. Vzhľadom k tomu, rozhranie je plán pre ďalšie triedy odkazovať a stavať od nuly.

Pravidlá abstraktnej triedy v C #

Pri práci s abstraktnými triedami existujú určité pravidlá.

  • Pretože abstraktné triedy majú neúplné definície metód, nemožno ich vytvoriť. Akýkoľvek pokus o vytvorenie objektu abstraktnej triedy by spôsobil chybu kompilácie.
  • Abstraktné metódy nemôžu byť definované v abstraktných triedach, ale iba deklarované. Telo metódy musí byť definované v odvodených triedach.
  • Odvodené triedy musia implementovať všetky abstraktné metódy.
  • Abstraktné metódy nemôžu byť statické alebo virtuálne.

Príklad abstraktnej triedy v jazyku C #

Vyhlásenie o probléme: Vezmime si ďalší príklad zo skutočného sveta. Predpokladajme, že sa od vás požaduje automatizácia procesu generovania ponukových listov pre určitú organizáciu. Aktuálny proces je úplne manuálny a vyžaduje úpravu existujúcich ponúk, ktoré sú náchylné na chyby. Pri niektorých ponukových listoch sú určité veci, ako napríklad miesto výkonu práce, načasovanie práce, názov spoločnosti, obchodná značka atď. Pre každú ponuku sú špecifické ďalšie veci, ako napríklad meno zamestnanca, pozícia, plat, dátum nástupu atď. písmeno.

Riešenie : Na tento účel by ste navrhli abstraktnú triedu. Uvidíme ako.

kód:

ode: using System;
abstract class OfferLetter
(
public abstract string Name(string name);
public abstract string Designation(string designation);
public abstract int Payment(int pay);
public abstract string DOJ(string doj);
public string CompanyName()
(
return "XYZ Corporation Pvt. Ltd.";
)
public string OfficeAddress()
(
return "512, Manhattan, NY";
)
public string CompanyBranding()
(
return this.CompanyName() + " is a privately owned regsitered corporation operating \n under the license provided by the state of New York.";
)
public string Disclaimer()
(
return "This letter and its contents are confidential in nature and are intended only \n for the recipient."+
"\nIf you are not the correct recipient, kindly return it immediately \n to " + this.CompanyName() + " " + this.OfficeAddress() + ".";
)
)
class PrintOfferLetter : OfferLetter
(
public override string Name(string name)
(
return name;
)
public override string Designation(string designation)
(
return designation;
)
public override int Payment(int pay)
(
return pay;
)
public override string DOJ(string doj)
(
return doj;
)
)
public class Program
(
public static void Main()
(
PrintOfferLetter ltr = new PrintOfferLetter();
string empName = "Mr. ABC", designation = "Senior Consultant", doj = "20-02-2020";
int pay = 50000;
Console.WriteLine(ltr.CompanyName() + " is very happy to extend this offer letter to \n" + ltr.Name(empName)
+ " at the designation of " + ltr.Designation(designation) + " with an annual pay of " + ltr.Payment(pay) + "$.");
Console.WriteLine("\nYou are required to report at " + ltr.OfficeAddress() + " from " + ltr.DOJ(doj) + " (dd-mm-yyyy).");
Console.WriteLine("\n\n" + ltr.CompanyBranding());
Console.WriteLine("\n\n" + ltr.Disclaimer());
)
)

Výkon:

záver

Stručne povedané, abstraktná trieda je jednoducho neúplná alebo čiastočne úplná trieda, ktorú môžu odvodiť iné triedy a na nej vybudovať svoju logiku. V tomto článku sme videli, ako sa vyhlasuje abstraktná trieda a ako funguje. Videli sme príklady použitia abstraktných tried v reálnom živote a ako sa líšia od rozhraní. Odporúča sa vo vašom kóde vyskúšať čo najviac abstraktné triedy. Toto je zásadný postup dobrého programovania.

Odporúčané články

Toto je sprievodca abstraktnou triedou v jazyku C #. Tu diskutujeme definíciu a ako abstraktná trieda funguje v C # spolu s pravidlami a príkladom. Viac informácií nájdete aj v ďalších súvisiacich článkoch -

  1. Čo sú to abstraktné triedy v JavaScripte?
  2. Abstraktná trieda v C ++? (Príklady)
  3. Čo je to abstraktná trieda v PHP?
  4. Prehľad abstraktnej triedy v Pythone

Kategórie: