19 Ekim 2015 Pazartesi

Interface Nedir ?

Dün yazdığım abstract class yazısından sonra bugünde object orientedın temel taşlarından birisi olan interface'i anlatmak gerekir. Örnek kodlara başlamadan önce interface'i tanımlamak lazım.

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.

c# interface

İ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.

c# interface

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.

c# interface

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.


c# interface

Interfacelere property tanımlarken tanımlayıcı olarak bir şey veremeyiz. Interfaceler içlerinde tanımlanan bütün alanları public olarak kabul eder. Bu da abstract classtan diğer bir farkıdır.
Şimdi Etcil ve Otcul interfacelerimizi oluşturalım.

c# interface

Sıra geldi hayvanlarımızı oluşturmaya. İlk olarak otçul olan bir At oluşturalım.

c# interface

Şimdi birde etçil bir Kaplan oluşturalım.

c# interface

Birde hem etçil hem de otçul olan Ayı oluşturalım.

c# interface

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 :(

c# interface

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