Mis on abstraktne klass C # -s?

Sõna abstraktne tähendab mõtet või ideed, millel ei ole oma füüsilist vormi, kuid mis toimib teiste asjade alusena. Sama on mõiste abstraktse klassi taga. Selles artiklis käsitleme C # abstraktseid klasse. Abstraktne klass on C # eriklass, mida ei saa realiseerida, st te ei saa luua abstraktse klassi objekte. Abstraktse klassi eesmärk on pakkuda teistest klassidest skeleti struktuur, millest tuletada. Abstraktsetel klassidel pole oma rakendust. Nad nõuavad, et arendajad ja programmeerijad tuletaksid abstraktsest klassist ja tugineksid skeleti struktuurile, st kirjutaksid nende teostuse. Abstraktsel klassil võivad olla ka abstraktsed meetodideklaratsioonid. Neil meetoditel pole jällegi definitsioone.

Abstraktsete klasside ja meetodite deklareerimise süntaks hõlmab märksõna abstraktse paigutamist deklaratsiooni ette. Nii lihtne see ongi.

Süntaks:

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

Pidage meeles, et abstraktsetel meetoditel ei saa olla definitsioone. Seega lõpevad abstraktse meetodi deklaratsioonid semikooloniga. Neid saab ainult deklareerida. Mõisted tuleb esitada tuletatud mitteabstraktsetes klassides.

Kuidas abstraktne klass töötab C # -s?

Abstraktne märksõna juhendab koostajat, et klass on põhiklassi skeleti struktuur, mida tuleb rakendada tuletatud klassides. Kui kompilaator leiab mingi klassi, mis tuletab abstraktse põhiklassi, kontrollib ta, kas kõik abstraktsed meetodid ja omadused on ületatud ja tuletatud klassis rakendatud.

Abstraktne klass vs liides

Nüüd võite mõelda, mis see kõik on ja mida liides teeb. Kuidas erineb abstraktne klass liidesest?

Mõistagem seda näitega. Ütleme nii, et juhime kirjastust ja oleme palganud paar toimetajat meie ajakirja veergude kirjutamiseks. Oletagem, et nad on eri žanride eksperdid, kirjutavad artikleid, mis avaldatakse konkreetsel nädalapäeval, ja nad on kõik palgatud sama palgaga.

Määratleme toimetajatele abstraktse töötajate klassi.

Kood:

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

Makseviisi saaksime hõlpsalt rakendada, teades, et see on kõigile sama. Kaks ülejäänud meetodit kuulutati abstraktseks, et seda saaks rakendada tuletatud klass. Võiks kuulutada iga toimetaja jaoks abstraktsest klassist tavapärase klassi ja seejärel rakendada žanrite ja päevade määratlemiseks abstraktseid meetodeid. Nüüd oletame, et ka iga toimetaja palk on erinev. Üks viis meie koodi muutmiseks on makseviisi abstraktseks kuulutamine. Teine võimalus oleks kuulutada kogu EmployeeEditor liideseks ja anda klassidele päranduseks täielik vabadus.

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

Seega on abstraktne klass teiste klasside põhiklass, millele toetuda. Arvestades, et liides on teiste klasside plaan, millele viidata ja nullist üles ehitada.

C-klassi abstraktse klassi reeglid

Abstraktsete klassidega töötamisel on teatud reeglid.

  • Kuna abstraktsetel klassidel on puudulikud meetodimääratlused, ei saa neid seetõttu realiseerida. Mis tahes katse luua abstraktse klassi objekt tekitaks kompileerimise aja vea.
  • Abstraktseid meetodeid ei saa abstraktsetes klassides määratleda, vaid ainult deklareerida. Meetodi põhiosa tuleb määratleda tuletatud klassides.
  • Tuletatud klassid peavad rakendama kõiki abstraktseid meetodeid.
  • Abstraktsed meetodid ei saa olla staatilised ega virtuaalsed.

C-klassi abstraktse klassi näide

Probleemiavaldus: Võtame veel ühe reaalse maailma näite. Oletame, et teil palutakse automatiseerida pakkumise kirjade genereerimise protsess kindla organisatsiooni jaoks. Praegune protsess on täiesti käsitsi toimiv ja nõuab olemasolevate pakkumiskirjade redigeerimist, mis võib põhjustada tõrkeid. On teatud asju, mis on ühised kõigi pakkumiskirjade puhul, näiteks töökoht, tööaeg, ettevõtte pealkiri, ettevõtte kaubamärgid jne. Iga pakkumise puhul on iseloomulikud muud asjad, näiteks töötaja nimi, ametikoht, palk, liitumiskuupäev jne. kiri.

Lahendus : ülaltoodud otstarbeks kujundaksite abstraktse klassi. Vaatame kuidas.

Kood:

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äljund:

Järeldus

Lühidalt - abstraktne klass on lihtsalt mittetäielik või osaliselt täielik klass, mille teised klassid saavad tuletada ja ehitada sellele oma loogika. Selles artiklis oleme näinud, kuidas abstraktne klass kuulutatakse ja see töötab. Nägime reaalse elu näiteid abstraktsete klasside kasutamisest ja sellest, kuidas need erinevad liidestest. Soovitatav on proovida ja kasutada oma koodis võimalikult palju abstraktseid klasse. See on hea programmeerimise ülioluline tava.

Soovitatavad artiklid

See on juhend C # abstraktse klassi jaoks. Siin käsitleme mõistet ja seda, kuidas abstraktse klass töötab C # -s, koos reeglite ja näitega. Lisateavet leiate ka meie muudest seotud artiklitest -

  1. Mis on JavaScriptis abstraktsed klassid?
  2. C ++ abstraktne klass? (Näited)
  3. Mis on abstraktsusklass PHP-s?
  4. Ülevaade abstraktsest klassist Pythonis

Kategooria: