C # 'da Soyut Sınıf nedir?
Abstract Class asla somutlaştırılamaz ve abstract anahtar sözcüğü ile işaretlenir. Soyut bir sınıf, içinde sıfır veya daha fazla soyut yöntem içerir. Soyut sınıf, bir temel sınıf görevi görür ve yöntemini uygulayan veya geçersiz kılan alt sınıflar tarafından miras alınacak şekilde tasarlanmıştır.
C # 'da soyut sınıfı aşağıda verilen örnekle öğrenelim. Aşağıda 'Hayvan' adlı bir sınıfın tanımı bulunmaktadır. 'Hayvan' sınıfı tanımlandığında, ister köpek ister kedi olsun, hayvan hakkında hiçbir şey bilinmemektedir. Açıklama adı verilen yöntem, yalnızca sınıf için tanımlanmış genel bir yöntemdir.
Şimdi Animal'in tam olarak ne olacağı bilindiğinde, temel sınıfı miras alan başka bir sınıf yaratırız. Hayvanın aslında bir Köpek olduğunu bilirsek, ana temel sınıfı miras alan Köpek sınıfı oluştururuz. Buradaki temel fark, Dog sınıfının Animal sınıfının Description yönteminin tanımını değiştirememesidir. Dog-Description adlı kendi C # soyut yöntemini tanımlaması gerekir. Bu, C # soyut sınıflarının temel kavramıdır.
Kodumuzu bir C # soyut sınıfını içerecek şekilde nasıl değiştirebileceğimize dair gerçek zamanlı örnekle C # 'da soyut sınıfı görelim. C # soyutlama sınıfı kullanılarak çalıştırılabilecek hiçbir şey olmadığı için kodu çalıştırmayacağımızı unutmayın.
Adım 1) İlk adım olarak soyut bir sınıf oluşturalım. Sınıf Öğretici olarak adlandırılacak ve yalnızca bir yöntemi olacaktır. Tüm kodun Program.cs dosyasına yazılması gerekir.
Kod Açıklaması: -
- Önce soyut sınıfı tanımlıyoruz. Soyut anahtar sözcüğün kullanımına dikkat edin. Bu, sınıfın soyut bir sınıf olduğunu belirtmek için kullanılır.
- Sonra, hiçbir şey yapmayan yöntemimizi tanımlıyoruz. Yöntem, sanal olarak adlandırılan anahtar kelimeye sahip olmalıdır. Bu, yöntemin alt sınıf tarafından değiştirilemeyeceği anlamına gelir. Bu, herhangi bir soyut sınıf için temel bir gerekliliktir.
Adım 2) Şimdi çocuk sınıfımızı ekleyelim. Bu kod, Program.cs dosyasına eklenir.
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();}}}
Bu kodda istisnai hiçbir şey yok. Soyut Tutorial sınıfını miras alan 'Guru99Tutorial' adlı bir sınıf tanımlıyoruz. Daha sonra daha önce kullandığımız yöntemlerin aynısını tanımlarız.
Not: Burada Tutorial sınıfında tanımlanan Set yönteminin tanımını değiştiremeyiz. Tutorial sınıfında, 'Set' (public virtual void Set ()) adında bir yöntem tanımlamıştık. Yöntem soyut C # sınıfının bir parçası olduğundan, Guru99Tutorial sınıfında Set yöntemini yeniden tanımlamamıza izin verilmiyor.