Mikä on abstrakti luokka C #: ssä?
Abstraktia luokkaa ei voida koskaan instantisoida, ja se on merkitty avainsanalla abstrakti. Abstrakti luokka sisältää nolla tai enemmän abstrakteja menetelmiä. Abstrakti luokka toimii perusluokana ja on suunniteltu perimään aliluokissa, jotka joko toteuttavat tai joko ohittavat menetelmänsä.
Opitaan abstrakti luokka C #: ssä alla olevan esimerkin avulla. Alla on määritelmä luokasta nimeltä eläin. Kun eläinluokka on määritelty, eläimestä ei tiedetä mitään, olipa kyseessä koira tai kissa. Kuvaus nimeltä kuvaus on vain luokalle määritelty yleinen menetelmä.
Nyt kun tiedetään, mistä eläin tarkalleen tulee, luomme toisen luokan, joka perii perusluokan. Jos tiedämme, että eläin on itse asiassa koira, luomme koiraluokan, joka perii pääperusluokan. Tärkein ero tässä on se, että koiraluokka ei voi muuttaa eläinluokan kuvausmenetelmän määritelmää. Sen on määriteltävä oma C # abstrakti menetelmä nimeltä Dog-Description. Tämä on C # abstraktien luokkien peruskäsite.
Katsotaanpa abstrakti luokka C #: ssä reaaliaikaisella esimerkillä siitä, kuinka voimme muuttaa koodimme sisällyttää C # abstrakti luokka. Huomaa, että emme käytä koodia, koska mitään ei voida suorittaa C # abstraktioluokan avulla.
Vaihe 1) Luodaan ensimmäisenä abstrakti luokka. Luokkaa kutsutaan opetusohjelmaksi, ja sillä on vain yksi menetelmä. Kaikki koodi on kirjoitettava Program.cs-tiedostoon.
Koodin selitys: -
- Määritämme ensin abstraktin luokan. Huomaa abstraktin avainsanan käyttö. Tätä käytetään osoittamaan, että luokka on abstrakti luokka.
- Seuraavaksi määritämme menetelmän, joka ei tee mitään. Menetelmässä on oltava avainsana nimeltä virtuaalinen. Tämä tarkoittaa, että lapsiluokka 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ääritämme vain luokan nimeltä Guru99Tutorial, joka perii abstraktin Tutorial-luokan. Määritämme sitten samat menetelmät kuin aiemmin.
Huomaa: Täällä emme voi muuttaa Set-menetelmän määritelmää, joka määritettiin opetusryhmässä. Tutorial-luokassa olimme määrittäneet menetelmän nimeltä 'Set' (julkinen virtuaalinen void Set ()). Koska menetelmä oli osa abstraktia luokkaa C #, emme saa määritellä Set-menetelmää uudelleen Guru99Tutorial-luokassa.