C# Abstract Class Tutorial esimerkillä: Mikä on abstraktio?
Mikä on abstrakti luokka C#:ssa?
Abstrakti luokka ei voi koskaan olla ilmentymä, ja se on merkitty avainsanalla abstrakti. Abstrakti luokka sisältää nolla tai useampia abstrakteja metodia. Abstrakti luokka toimii perusluokkana ja se on suunniteltu perittäväksi alaluokille, jotka joko toteuttavat tai joko ohittavat sen menetelmän.
Opitaan abstraktia luokkaa C#:lla alla olevan esimerkin avulla. Alla on luokan "Eläin" määritelmä. Kun 'Eläin'-luokka määritellään, eläimestä ei tiedetä mitään, onko se koira tai kissa. Kuvaus-niminen menetelmä on vain luokalle määritetty yleinen menetelmä.
Nyt kun tiedetään, mikä eläin tarkalleen tulee olemaan, luomme toisen luokan, joka perii perusluokan. Jos tiedämme, että eläin on itse asiassa Koira, luomme koiraluokan, joka perii pääperusluokan. Keskeinen ero tässä on, että koiraluokka ei voi muuttaa määritelmää DescriptAnimal-luokan ionimenetelmä. Sen on määriteltävä oma abstrakti C#-menetelmänsä nimeltään Dog-Descriptioni. Tämä on C#-abstraktien luokkien peruskäsite.
Luo abstrakti luokka C#:lla
Katsotaanpa abstraktia luokkaa C#-kielellä reaaliaikaisten esimerkkien kanssa siitä, kuinka voimme muuttaa koodimme sisältämään C#-abstraktin luokan. Huomaa, että emme suorita koodia, koska mitään ei voida ajaa C#-abstraktioluokan avulla.
Vaihe 1) Ensimmäisenä askeleena luodaan abstrakti luokka. Luokan nimi on Tutorial, ja siinä on vain yksi menetelmä. Kaikki koodi on kirjoitettava Program.cs-tiedostoon.
Koodin selitys: -
- Ensin määritellään abstrakti luokka. Huomaa abstraktin avainsanan käyttö. Tätä käytetään osoittamaan, että luokka on abstrakti luokka.
- Seuraavaksi määrittelemme menetelmämme, joka ei tee mitään. Menetelmässä on oltava avainsana nimeltä virtual. Tämä tarkoittaa, että aliluokka ei voi muuttaa menetelmää. Tämä on perusvaatimus mille tahansa abstraktille luokalle.
Vaihe 2) Lisätään nyt lapsiluokkamme. Tämä koodi lisätään Program.cs-tiedostoon.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { abstract class Tutorial { public virtual void Set() { } } class Guru99Tutorial:Tutorial { protected int TutorialID; protected string TutorialName; public void SetTutorial(int pID,string pName) { TutorialID=pID; TutorialName=pName; } public String GetTutorial() { return TutorialName; } static void Main(string[] args) { Guru99Tutorial pTutor=new Guru99Tutorial(); pTutor.SetTutorial(1,".Net"); Console.WriteLine(pTutor.GetTutorial()); Console.ReadKey(); } } }
Tässä koodissa ei ole mitään poikkeuksellista. Määrittelemme vain luokan nimeltä "Guru99Tutorial", joka perii abstraktin Tutorial-luokan. Määrittelemme sitten samat menetelmät, joita olemme käyttäneet aiemmin.
Huomautus:
Tässä emme voi muuttaa Set-metodin määritelmää, joka määriteltiin Tutorial-luokassa. Tutorial-luokassa olimme määrittäneet menetelmän nimeltä 'Set' (public virtual void Set()). Koska menetelmä oli osa abstraktia luokkaa C#, emme saa määrittää Set-metodia uudelleen Guru99Tutorial-luokassa.
Yhteenveto
Abstrakti luokka C terävä on suunnitelma muille luokille, merkitty abstract
avainsana. Sitä ei voi ilmentää suoraan, ja se voi sisältää abstrakteja menetelmiä, jotka johdettujen luokkien on toteutettava. Abstraktit luokat vahvistavat johdonmukaista rakennetta alaluokkien välillä sallien samalla tietyt toiminnot. Tätä käsitettä käytetään yleisesti määrittämään peruskäyttäytymistä ja varmistamaan koodin joustavuus periytymisen kautta.