Interface sınıflara yetenek sağlayan aynı zamanda bazı yönleriyle abstract classlara benzeyen yapılardır. Bu adımları kodlama ile anlatırsak daha da iyi anlaşılır.
İlk olarak bir sınıfa birden fazla sınıftan kalıtım yapılamaz. Benim ilk olarak eskilerden okuduğum bir yazıdan aklımda kalan bir örnekle bunu açıklayayım.
Hayvanlar alemi temelli bir projem olsun. Bu projemde hayvanları etçil ve otçul olarak ikiye ayırayım.
İlk olarak abstract classlarımızı oluşturalım.
İlk olarak en temel sınıfımız olan Hayvan sınıfını oluşturduk. Şimdi Etçil sınıfımızı oluşturalım. Tabiki Hayvan sınıfından kalıtımla.
Burada en sonra Avladiklari adında bir liste ekledik. Bu durum etçiller için özel bir durum. Sırada Otcul sınıfımız var.
Artık tamamız. Hem Etcil hem de Otcul ları oluşturduk. Şimdi bunları istediğimiz gibi Hayvan sınıflarına ekleyebiliriz dersem de inanmayın :) Çünkü genelde ilk başta akla gelmeyen bir durumumuz var. Bir hayvan hem Etcil hem de Otcul ise ne yapacağız. İki sınıftan da kalıtılması gereken bir sınıf var karşımızda ancak bir sınıf sadece bir sınıftan kalıtılabilir.
Yani bu durumda abstract class ile interface arasındaki ve belkide en önemli farklı öğrenmiş oluyoruz. Bir sınıf sadece bir sınıftan kalıtılabilir ancak bir sınıfa birden fazla yetenek yani interface ekleyebiliriz. O zaman kodumuzu interfacelerle tekrar yazalım.
Şimdi Etcil ve Otcul interfacelerimizi oluşturalım.
Sıra geldi hayvanlarımızı oluşturmaya. İlk olarak otçul olan bir At oluşturalım.
Şimdi birde etçil bir Kaplan oluşturalım.
Birde hem etçil hem de otçul olan Ayı oluşturalım.
Gördüğünüz gibi son iki alan hem etçil hem de otçulun kendine has özellikleri ama biz bu iki özelliği tek sınıfa farklı iki interface ile verebildik.
Birde tanımlamaları yazarak konuyu kapatalım çünkü bugün biraz yorgunum :(
Kullanımını da gösterdikten sonra artık bana müsade. Umarım interface konusu anlaşılmıştır. Anlaşılmayan veya aklınızda bir soru varsa sorabilirsiniz. Hadi iyi akşamlar...
Hiç yorum yok:
Yorum Gönder