Što je apstraktna klasa u C #?

Riječ apstrakt znači misao ili ideju koja nema vlastiti fizički oblik, ali djeluje kao osnova za druge stvari. Isti je koncept koji stoji iza apstraktne klase. U ovom ćemo članku razgovarati o Sažecima nastave u C #. Apstraktna klasa je posebna klasa u C # koja se ne može instancirati, tj. Ne možete stvarati objekte apstraktne klase. Svrha apstraktne klase je osigurati skeletnu strukturu iz koje dolaze druge klase. Sažetak nastave nema vlastitu primjenu. Oni od programera i programera trebaju da potječu od apstraktne klase i nadogradnju na skeletnoj strukturi, tj. Da napišu njihovu implementaciju. Apstraktna klasa može unutar sebe imati i deklaracije apstraktnih metoda. Opet, ove metode ne mogu imati nikakvu definiciju.

Sintaksa deklariranja apstraktnih klasa i metoda uključuje postavljanje ključne riječi sažetak prije deklaracije. Jednostavno.

Sintaksa:

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

Zapamtite, apstraktne metode ne mogu imati definicije. Tako se deklaracije apstraktne metode završavaju zarezom. Mogu se samo deklarirati. Definicije moraju biti navedene u izvedenim neastraktnim klasama.

Kako apstraktni razred djeluje u C #?

Apstraktna ključna riječ upućuje prevoditelja da je klasa skeletne strukture bazne klase koja se primjenjuje u izvedenim klasama. Ako prevoditelj nađe bilo koju klasu koja izvodi apstraktnu osnovnu klasu, provjerava jesu li sve apstraktne metode i svojstva nadjačana i implementirana u izvedenu klasu.

Sažetak Klasa vs sučelje

Sada se možda pitate što su sve to i što sučelje radi. Dakle, kako se apstraktna klasa razlikuje od sučelja?

Shvatimo to primjerom. Recimo da vodimo izdavačku tvrtku i angažirali smo nekoliko urednika koji će pisati kolumne za naš časopis. Pretpostavimo da su stručnjaci u različitim žanrovima, pišu članke koji će biti objavljeni određenog dana u tjednu i svi se zapošljavaju uz istu plaću.

Definirajmo apstraktnu klasu zaposlenika za naše urednike.

Kodirati:

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

Jednostavno bismo mogli implementirati način plaćanja znajući da će isti biti za sve. Ostale dvije metode proglašene su apstraktnim da bi ih implementirala izvedena klasa. Moglo bi se deklarirati normalna klasa za svakog urednika koja proizlazi iz apstraktne klase, a zatim može primijeniti apstraktne metode za definiranje žanrova i dana. Pretpostavite da je plaća svakog urednika također različita. Jedan od načina da promijenimo naš kôd je taj način plaćanja proglasiti apstraktnim. Drugi način bi bio proglasiti cijeli EmployeeEditor kao sučelje i dati potpunu slobodu nasljeđivanju klasa.

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

Dakle, apstraktna klasa je osnovna klasa na kojoj se mogu graditi druge klase. Imajući u vidu da je sučelje nacrt za ostale klase na koje se mogu pozivati ​​i graditi ispočetka.

Pravila apstraktne nastave u C #

Postoje određena pravila koja se moraju pridržavati pri radu s apstraktnim predavanjima.

  • Budući da apstraktne klase imaju nepotpune definicije metoda, stoga ih nije moguće izuzeti. Svaki pokušaj stvaranja objekta apstraktne klase rezultirao bi pogreškom u vremenu prevođenja.
  • Apstraktne metode ne mogu se definirati u apstraktnim klasama, nego samo deklarirati. Tijelo metode mora se definirati u izvedenim klasama.
  • Izvedene klase moraju implementirati sve apstraktne metode.
  • Apstraktne metode ne mogu biti statične ili virtualne.

Primjer apstraktne klase u C #

Izjava problema: Uzmimo još jedan primjer iz stvarnog svijeta. Pretpostavimo da se od vas traži da automatizirate postupak generiranja ponuda pisama za određenu organizaciju. Trenutačni je postupak potpuno ručni i zahtijeva uređivanje postojećih pisama s ponudama, što je sklon pogreškama. Postoje određene stvari koje bi bile zajedničke za sva pisma o ponudi, kao što su mjesto rada, radni vremenski raspored, naziv tvrtke, markiranje tvrtke, itd. Ostale stvari kao što su ime zaposlenika, položaj, plaća, datum pridruživanja itd. Su specifične za svaku ponudu pismo.

Rješenje : Dizali biste apstraktnu klasu u gornju svrhu. Da vidimo kako.

Kodirati:

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

Izlaz:

Zaključak

Ukratko, apstraktna klasa je jednostavno nepotpuna ili djelomično cjelovita klasa koju druge klase mogu izvesti i nadograditi svoju logiku. U ovom smo članku vidjeli kako se deklarira apstraktna klasa i funkcionira. Vidjeli smo primjere korištenja apstraktnih klasa u stvarnom životu i kako se one razlikuju od sučelja. Preporučuje se isprobati i koristiti apstraktne časove što je više moguće u vašem kodu. Ovo je presudna praksa dobrog programiranja.

Preporučeni članci

Ovo je vodič za Sažetak klase u C #. Ovdje smo raspravljali o definiciji i kako djeluje apstraktna klasa u C #, zajedno s pravilima i primjerom. Možete i pregledati naše druge povezane članke da biste saznali više -

  1. Što su sažeci nastave u JavaScript-u?
  2. Sažetak razreda C ++? (Primjeri)
  3. Što je apstraktna klasa u PHP-u?
  4. Pregled sažetak klase u Python-u

Kategorija: