Absract class, içinde abstract method tanımlayıp bu class’tan türetilen başka class’ların içinde methoddun kullanılmasına imkan sağlar.
Bir örnek üzerinde detaylı olarak incelersek : Database isimli abstract bir class olsun. Bu class’dan başka class’lar implemente edelim(türetelim). Bu class içine abstract bir method ekleyelim.
Absract class içinde methodun gövdesi olmaz yalnızca tanımını yapabiliriz. Gövde kısmı türetilen sınıflarda olacaktır.
Abstract anahtar kelimesi temel class isminin ve methodun içinde kullanılmalıdır. Türetilen sınıflarda da abstract methodun kullanımı için override anahtar kelimesinin kullanılması gerekmektedir.
Önemli diğer bir özellik ; abstract class’lar new‘lenemez!
Database database = new Database(); // Will generate an error (Cannot create an instance of the abstract class or interface 'Database')
abstract class Database
{
public void Add()
{
Console.WriteLine("Added.");
}
public abstract void Delete();
}
class Oracle : Database
{
public override void Delete()
{
Console.WriteLine("Deleted by MySql.");
}
}
class SqlServer : Database
{
public override void Delete()
{
Console.WriteLine("Deleted by SqlServer.");
}
}
Methodları aşağıdaki şekilde çağırırsak :
public class Program
{
static void Main(string[] args)
{
//absract class'lar new'lenmez!!!!
Database database1 =new SqlServer();
database1.Add();
database1.Delete();
Database database2 = new Oracle();
database2.Add();
database2.Delete();
Console.ReadLine();
}
}
Output :
