Abstractlar da birer sınıftır yapısını basit manada Interface’ler ile virtual methodların birleşimi gibi düşünebiliriz
Inheritance amacıyla kullanılır
Interface’ler gibi kendi başına kullanılanmaz (nesne üretilemez)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AbstractClasses
{
class Program
{
static void Main(string[] args)
{
/*
* Abstractlar da birer sınıftır yapısını basit manada Interface'ler ile virtual methodların birleşimi gibi düşünebiliriz
* Inheritance amacıyla kullanılır
* Interface'ler gibi kendi başına kullanılanmaz (nesne üretilemez)**/
Database database = new Oracle();
database.Add();
database.Delete();
Database database2 = new SqlServer();
database2.Add();
database2.Delete();
Console.ReadLine();
}
}
abstract class Database
{
//Örneğin diyelim ki Add işlemi tüm veritabanları için aynı fakat silme işlemi herbirinde farklı olsun
//Abstract Class'lara hem tamamlanmış methodlar hem de tamamlanmamış (sadece imza olarak ismi taşıyan) methodlar oluşturabiliyoruz
public void Add()
{
Console.WriteLine("Added by default");
}
public abstract void Delete();
}
class SqlServer : Database
{
public override void Delete()
{
Console.WriteLine("Deleted by SqlServer");
}
}
class Oracle : Database
{
public override void Delete()
{
Console.WriteLine("Deleted by Oracle");
}
}
}

Yorum bırakın