Site bilgilerinden ziyade kullanıcı ağzından yazılmış yazıların daha az kafa karıştırıcı olduğunu düşünüyorum.
"Genellikle soyut sınıfları oluşturmadaki amacımız fonksiyonların kalıtım yoluyla transferini sağlamaktır. e peki neden abstract diyoruz ki normal kalıtım yoluyla da fonksiyonların transfer edebiliyorduk diyebiliriz. ama soyut sınıfın bir konsepti var. bir sınıf abstract edilmiş ise o sınıftan bir nesne üretemiyor ayrıca bu soyut sınıf ile kalıtım ilişkisi bulunan bir sınıfımız varsa soyut sınıftaki ilgili fonksiyonları kendine göre düzenlemek zorundadır. e ben normal sınıf oluşturur kalıtım yoluyla ilişkilendirdiğim sınıflarında her birinde gider yeniden kendime göre düzenlerim üst sınıfa da abstract demem diyebiliriz. buradaki olay da şu, çocuk sınıf ilgi fonksiyonu oldu ki yeniden düzenlemeyi unuttu. haliyle çağırdığımızda üstteki sınıfın fonksiyonu çalışacak. ama burada da fonksiyonun içi belki boş bırakıldı belki dolu. hani kendimize güvenip sürekli eziyoruz ya çocuk sınıflarda, ne yazdığı önemli değil diye yazdık bir şeyler diyelim. burada isteğimizin dışında bilgisayarın belleğinde boşu boşuna hiç çalışmaması gereken bir fonksiyon için yer tutmuş ve bunu yürütmüş olduk. bir yerde böyle hataların önüne geçmiş olmak dışında nesne üretmeyeceğimiz ayrıca fonksiyon tanımının aktarımına ihtiyaç duyacağımız ve bu fonksiyonun nedenli bir şey olduğunu kullanacağımız sınıflarda özellikle tanımlamamız yani fonksiyonun ebeveyn olan classta içinin dolu olmasının bir amacının olmadığı zaten çocuk sınıflarda kendine özgü olarak çalışma prensibi olan bir yapıya ihtiyaç duyulduğundan abstract sınıflara ihtiyaç duyuyoruz. detaylarına girmeden basitinden böyle bir ihtiyaç tanımı yapılabilir."
"Türkçesi soyut sınıf olan oop’de çokça kullanılan sınıf çeşidi.
-abstract class’ı, birden fazla ortak özelliği bulunan nesnelerin ortak özelliklerini tekrar tekrar tanımlamak yerine, ortak özelliklerin tanımlandığı yer olarak tanımlayabiliriz. örneğin fabrikamız var ve bu fabrikada çalışan işçilerin bilgilerinin tutulduğu bir program tasarlayacağız. fabrikada çalışanları işçi, yönetici, mühendis, tekniker diye 4 kategoriyi ayırdığımızı varsayalım. bu 4 çeşit çalışanın da ortak özellikleri vardır. aldıkları maaşlar, yaşları, cinsiyetleri gibi. bu ortak özellikleri her sınıf için tekrar tekrar tanımlamak yerine bir kez abstract class’da tanımlarız ve bu class’ı diğer sınıflara miras veririz işimiz kolaylaşmış olur.
-abstract classlar içlerinde normal fonksiyonlar tanımlayabildiğimiz gibi abstract fonksiyonlar da tanımlayabiliriz.
abstract fonksiyon tanımlayabilmek için fonksiyonun başına abstract anahtar kelimesini koymalıyız. abstract fonksiyonun mantığı şudur: benzer özelliklere sahip nesnelerde, her bir nesne veya bir grup nesne için farklı olan özellikleri tekrar tekrar tanımlama zorluğunu ortadan kaldırmak. çok bilinen bir örnek üzerinden anlatayım. neredeyse bütün hayvanlar ses çıkarırlar. peki hayvanların çıkardıkları sesler birbirinin aynısı mıdır hayır. o zaman hayvanların sesi için abstract fonksiyon tanımlayıp, her bir hayvandan çıkan farklı ses için bu fonksiyonu override edebiliriz.
-kendilerinden obje oluşturulamaz. yalnızca sınıflara miras verebilir.
-genellikle bu konulara yeni başlayanlar interface ile abstract class’ları karıştırabiliyor. aralarındaki benzerlikleri ve farklılıkları anlatmak gerekirse:
benzerlikler
a. her ikisinden de obje oluşturulamaz.
b. her ikisinde de fonksiyonların gövdeleri boş olmalıdır ve bu fonksiyonların kullanılabilmeleri için override edilmeleri gerekir. (abstract class’lardaki normal tanımlanan fonksiyonlar hariç.)
farklılıklar
a. interface’lerde değişken tanımlanamazken abstract class’larda değişken tanımlanabilir.
b. bir sınıf birden fazla interface den miras alabilirken, en fazla bir abstract class dan miras alabilir."