• sadece child class derive etmek icin kullanilabilen , obje* yaratamayacaginiz parent class.

    icerdigi abstract metodlar , abstract classdan derive edilen child classlar tarafindan implement edilir.

    ---
    uktecinin notu: "java ile ilgili". dogaclamayi ilk bilgiden sonra yaparsiniz belki.
  • bir inteface olu$turulacak, ancak bu interface icinde deklare edilen methodlarin bir kismi, interfacei implemente eden classlarda aynen gercekle$tirilecekse, hemen bu methodlarin gercekle$tirimi bir kereligine o interface icinde yapilir ki, boyle siniflara abstract class adi verilir.
  • c# için konuşacak olursak implemente edilmedikleri sürece bir anlamları olmayan sınıflardır. base class olarak kullanılırlar ve üzerlerinden herhangi bir instance oluşturulamaz. bir abstract class içerisinde oluşturulan abstract metotların tamamı, ilgili abstract class'dan derive edilen child class tarafından implemente edilmek zorundadır. ancak aynısı abstract olmayan metotlar için geçerli değildir. ve yine abstract olmayan metotlar static olarak tanımlanabilir.

    interface'lerden en temel farkları hem abstract hem de abstract olmayan (non-abstract) metotlar içerebilmeleridir. oysa ki interface'lerin içerdikleri tüm metotlar abstract gibi davranır. yani derive edilen sınıfta mutlaka implemente edilmek zorundadırlar. eğer bir abstract class'ın tüm üyeleri abstract olarak tanımlanmışsa bu abstract class'ın interface'ten pek bir farkı kalmaz. ayrıca bir sınıf birden fazla interface'den kalıtılabilirken ancak tek bir abstract class'tan kalıtılabilir. yani abstract class'lar çoklu kalıtımı desteklemez.
  • bir kere oluşturulup child class'ları türetildikten sonra, üzerinde değişiklik yapılması çok zor olan ve üzerinde sonradan değişiklik yapılması pek tavsiye edilmeyen class'lardır.
  • memory leak karşıtı bir arkadaş.

    oop'un sevilesi yanlarından sadece biri. severiz, kullanırız. siz de kullanın, kullanmayanları uyarın, öğretin.
  • nesne yönelimli programlamaya (object oriented programming) girenlerde ilk baslarda kafa karisikligi yaratabilien programlama ve yazilim mimarisinin en önemli unsurlarindan biridir. özellikle interface ile karistirilirlar. dogada her nesne aslinda abstract yapidadir yani bir parcanin bütünü olarak olusurlar. parcalar olmadan bütün yoktur yani soyut birer nesnelerdir. örnegin kitabi ele alalim. kitap kendini olusturan bircok sayfa ve kapaktan olusan abstract yapidadir. yani kitap diye abstract bir class olusturuyoruz, bu abstract class icin sayfa ve kapak ögelerini yine abstract olarak belirliyoruz. eger bir kitap örnegin sadun boro nun pupa yelken kitabini olustururken kitap nesnesinden "extend" ediyoruz. abstract bir method dan "extend" ettigimiz icin bu kitabimiz sayfa ve kapak ögelerini uygulamamiz icin bizi zorlar. cünkü bu kitabin sayfa ve kapagi olmali der.

    bir method hem abstract hem final olamaz cünkü bunlar tamamen zit amacla kullanilir. abstract alt siniflar tarafindan uygulanmasini zorlamak icin vardir, final ise tam tersine uygulanmasini önlemek icin kullanilir.

    abstract classlar "parent" den aldiklari abstract methodlari uygulamak zorunda degillerdir. uygulanmasi icin altlarindaki normal classlara devrederler.

    abstract classlar ile tek basina bir örnek olusturulamaz, "instantiate" edilemezler. cünkü tek baslarina yoklardir, diger nesneler tarafindan "extend" edilmelidirler.
  • override edilmesi zorunlu olan en az bir tane method içeren class'a verilen isimdir.

    "neden içi boş method yazıp override etmiyoruz ki" gibi sorular takılabiliyor insanın aklına bazen.

    bana kalırsa bunun en basit açıklaması tek başınıza program yazıyorsanız, programın size override etmeniz gerektiğini hatırlatması gerekliliğidir. gözden kaçmasını engeller.
    eğer tek değilseniz ve bir görev paylaşımı varsa, zaten override edilmesi gerektiğini diğer geliştiricilere göstermeniz gerekir ki, bana kalırsa yine en güzel yol budur.
    kullanın, kullandırın efendim. concrete class'lar ile workaround yapmaya uğraşmayın.

    not: işbu entry java ve python için yazılmış olmakla beraber muhtemelen birçok oop temelli dil için geçerlidir.
  • bazı programlama modellerinde üst sınıfların direk kullanılması istenmez. burada sadece üst sınıftan türetilmiş olan sınıflardan oluşturulmuş nesnelerin kullanılması istenir.ortak özellikler bu class da toplanır. kod tekrarını azaltır. ınstance create edilmez. sadece extend edilir.
  • js'de typescriptle beraber ogrendigim yeni bir kavram abstract. ilk once anlamakta zorluk cektim ama tam olarak dogru anlayabildim mi emin degilim. anladigim kadariyla, ornek vermek gerekirse;

    ornegin insan yaratacagiz diyelim. bir insanin zorunlu fonksiyonlari vardir. bunlar nefes almak gibi gibi. eger dogru anladiysam abstract sinifina nefes alma methodu tanimliyoruz ve ornegin person sinifi yarattigimizda abstract sinifindan extends ediyoruz ve boyle her person sinifi yarattigimizda nefes alma methodunu zorunlu kilmis oluyoruz. cunku insan nefes almak zorundadir ve abstract kullanarak nefes almayi methodunu zorunlu kildik. normal bir classta da nefes alma methodu tanimlayabilirdik ama kullanimini zorunlu kilamazdik.

    anladigim bu ama dogru mu anladim bilmiyorum. bu konuda bilgili yazar arkadaslar mesaj kutumu yesillendirirse sevirim.
  • python'da abc modülünü import ederek kullanabilirsiniz.
hesabın var mı? giriş yap