Mikä on abstraktiluokka C #: ssä?

Sana abstrakti tarkoittaa ajatusta tai ajatusta, jolla ei ole omaa fyysistä muotoa, mutta joka toimii pohjana muille asioille. Sama on abstraktin luokan takana oleva käsite. Tässä artikkelissa keskustelemme abstraktiluokista C #: ssä. Abstrakti luokka on erityinen luokka C #: ssä, jota ei voida toteuttaa, ts. Et voi luoda abstraktin luokan objekteja. Abstraktin luokan tarkoituksena on tarjota luurankorakenne muille luokille, joista voidaan johtaa. Tiivistelmäluokilla ei ole omaa toteutusta. Ne vaativat kehittäjiä ja ohjelmoijia johtamaan abstraktista luokasta ja rakentamaan luurankoa, ts. Kirjoittamaan niiden toteutuksen. Abstraktissa luokassa voi olla myös abstrakteja menetelmäilmoituksia. Jälleen näillä menetelmillä ei voi olla määritelmiä.

Abstraktien luokkien ja menetelmien ilmoittamisen syntaksiin kuuluu avainsanan sijoittaminen abstraktiin ennen ilmoitusta. Niin yksinkertaista.

Syntaksi:

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

Muista, että abstrakteilla menetelmillä ei voi olla määritelmiä. Siten abstraktit menetelmädeklaraattorit päättyvät puolipisteellä. Ne voidaan vain ilmoittaa. Määritelmät on annettava johdettuina ei-abstraktina luokkina.

Kuinka abstrakti luokka toimii C #: ssä?

Abstrakti avainsana ohjeistaa kääntäjälle, että luokka on perusluokan rakenne, joka toteutetaan johdettuihin luokkiin. Jos kääntäjä löytää jonkin luokan, joka johtaa abstraktiin perusluokkaan, se tarkistaa onko kaikki abstraktit menetelmät ja ominaisuudet korvattu ja toteutettu johdetussa luokassa.

Tiivistelmä luokka vs. käyttöliittymä

Nyt saatat miettiä, mitä nämä kaikki ovat ja mitä käyttöliittymä tekee. Joten miten abstrakti luokka eroaa käyttöliittymästä?

Ymmärtäkäämme se esimerkillä. Oletetaan, että johtamme kustantamoyritystä ja olemme palkanneet muutaman toimittajan kirjoittamaan sarakkeita lehdellemme. Oletetaan, että he ovat eri genrejen asiantuntijoita, kirjoittavat artikkeleita, jotka julkaistaan ​​tietyllä viikonpäivänä, ja he kaikki palkataan samalla palkalla.

Määritellään abstrakti työntekijäluokka toimittajillemme.

Koodi:

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

Voimme helposti ottaa maksutavan käyttöön tietäen, että se olisi sama kaikille. Kaksi muuta menetelmää julistettiin abstraktiksi johdetun luokan toteuttamiseksi. Jokaiselle abstraktista luokasta johtajalle voidaan julistaa normaali luokka ja voidaan sitten toteuttaa abstrakteja menetelmiä tyylilajien ja päivien määrittelemiseksi. Oletetaan nyt, että myös kunkin toimittajan palkka on erilainen. Yksi tapa muuttaa koodiamme on julistaa maksutapa abstraktiksi. Toinen tapa olisi julistaa koko EmployeeEditor käyttöliittymäksi ja antaa täysi vapaus luokkien perimiselle.

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

Siksi abstrakti luokka on perusluokka muille luokille, joille rakennetaan. Liittymä on suunnitelma muille luokille viitata ja rakentaa tyhjästä.

C-luokan abstraktin luokan säännöt

Abstraktien luokkien kanssa työskennellessä on noudatettava tiettyjä sääntöjä.

  • Koska abstraktilla luokilla on epätäydelliset menetelmämääritelmät, joten niitä ei voida toteuttaa. Jokainen yritys luoda abstraktin luokan objekti johtaisi käännösajan virheeseen.
  • Tiivistelmämenetelmiä ei voida määritellä abstraktiluokissa, vaan vain ilmoittaa. Menetelmäkappale on määriteltävä johdettuihin luokkiin.
  • Johdettujen luokkien on toteutettava kaikki abstraktit menetelmät.
  • Abstraktit menetelmät eivät voi olla staattisia tai virtuaalisia.

Esimerkki C: n abstraktista luokasta

Ongelma: Otakaamme toinen reaalimaailman esimerkki. Oletetaan, että sinua pyydetään automatisoimaan tarjouskirjeiden luomisprosessi tietylle organisaatiolle. Nykyinen prosessi on täysin manuaalinen ja vaatii olemassa olevien tarjouskirjeiden muokkaamista, mikä on altis virheille. On tiettyjä asioita, jotka olisivat yhteisiä kaikille tarjouskirjeille, kuten työn sijainti, työn ajoitukset, yrityksen nimi, yrityksen tuotemerkki jne. Muut asiat, kuten työntekijän nimi, asema, palkka, liittymispäivämäärä jne., Ovat erityisiä jokaiselle tarjoukselle. kirjain.

Ratkaisu : Suunnittelet abstraktin luokan yllä olevaan tarkoitukseen. Katsotaanpa kuinka.

Koodi:

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

lähtö:

johtopäätös

Lyhyesti sanottuna, abstrakti luokka on yksinkertaisesti epätäydellinen tai osittain täydellinen luokka, jonka muut luokat voivat johtaa ja rakentaa logiikansa päälle. Tässä artikkelissa olemme nähneet kuinka abstrakti luokka julistetaan ja se toimii. Näimme tosielämän esimerkkejä abstraktien luokkien käytöstä ja siitä, kuinka ne eroavat rajapinnoista. On suositeltavaa kokeilla ja käyttää abstrakteja luokkia mahdollisimman paljon koodissa. Tämä on hyvän ohjelmoinnin ratkaiseva käytäntö.

Suositellut artikkelit

Tämä on opas abstraktiluokkaan C #. Tässä keskustellaan määritelmästä ja kuinka abstrakti luokka toimii C #: ssä, yhdessä sääntöjen ja esimerkin kanssa. Voit myös käydä läpi muiden aiheeseen liittyvien artikkeleidemme saadaksesi lisätietoja -

  1. Mitkä ovat abstraktit luokat JavaScript-muodossa?
  2. Tiivistelmäluokka C ++: ssa? (Esimerkit)
  3. Mikä on abstraktiluokka PHP: ssä?
  4. Yleiskatsaus Pythonin abstraktista luokasta