Abstract class, programlama dilinde kullanılan bir yapıdır. Abstract class’lar, soyut sınıflar olarak adlandırılır ve bu yapılar, somut olarak uygulanamayan işlevsellikleri tanımlamak için kullanılır. Bir abstract class, kendisi için tanımlanmış bir işlevsellik içermemekle birlikte, türetilen sınıflarda kullanılmak üzere soyut bir temel oluşturur. Abstract class’ların özellikleri şunlardır:
Abstract class’lar, new anahtar kelimesi ile doğrudan oluşturulamaz. Yani, bir abstract class’ın bir nesnesi oluşturulamaz.
Abstract class’lar, bir veya daha fazla abstract metod içerebilir. Abstract metodlar, bir işlevselliğin nasıl uygulanacağını tanımlamak için kullanılır, ancak kendileri için bir işlevsellik içermemektedir. Abstract metodlar, türetilen sınıflarda somut bir şekilde uygulanmalıdır.
Abstract class’lar, türetilen sınıflarda kalıtım yoluyla kullanılabilir. Türetilen sınıflar, abstract class’ın içinde bulunan tüm abstract metodları somut bir şekilde uygulamalıdır. Aksi takdirde, türetilen sınıf da bir abstract class olur.
Örnek olarak, bir abstract class oluşturarak kuşları tanımlayabiliriz. Bu abstract class, kuşların genel özelliklerini içerebilir (örneğin, renk, ağırlık, uçma hızı gibi) ancak bir kuşun nasıl uçacağını belirtmez. Bunun yerine, türetilen sınıflarda (örneğin, kırlangıç sınıfı, kartal sınıfı gibi) nasıl uçacağı belirtilmelidir. Bu sayede, abstract class kalıtım yoluyla kullanılarak türetilen sınıfların ortak özelliklerini tanımlamış oluruz.