C#'ta +, -, *, == gibi aritmetik ve karşılaştırma operatörleri operator anahtar kelimesiyle aşırı yüklenebilir. && ve || gibi koşullu mantıksal operatörler doğrudan aşırı yüklenemez. <<= ve >>= gibi bileşik atama operatörleri de ayrıca tanımlanmaz; bunlar << ve >> aşırı yüklendiğinde otomatik olarak çalışır. Bu yüzden doğrudan aşırı yüklenebilen operatör +'dır.
Nesneye Yönelik Programlama Ünite 8
Kaynak: https://lolonolo.com/2022/08/12/nesneye-yonelik-programlama-unite-8/
📖 Konu özeti (sınav öncesi tekrar)
Interface (Ara Birim), Çok Biçimlilik (polymorphısm) Ve Operatörlerin Aşırı Yüklenmesi
Interface (Ara Birim), Çok Biçimlilik (polymorphısm) Ve Operatörlerin Aşırı Yüklenmesi
C#'ta && (koşullu VE) operatörü doğrudan aşırı yüklenemez. Ancak &, true ve false operatörleri aşırı yüklendiğinde dolaylı olarak kullanılabilir hâle gelir. Buna karşılık +, -, ! ve ~ tekli/ikili operatörleri operator anahtar kelimesiyle doğrudan aşırı yüklenebilir.
C#'ta operatör aşırı yükleme, public static bir metot içinde operator anahtar kelimesiyle yapılır. Örnek: public static Nokta operator +(Nokta a, Nokta b). new nesne oluşturur, interface ara birim tanımlar, class sınıf tanımlar, protected ise bir erişim belirleyicidir.
II – Kalıtımı desteklemez
III – Yapılarda (struct) kullanılamazlar
C# programlama dilinde Ara Birim (interface) ile ilgili verilen ifadelerden hangisi/hangileri doğrudur?
C#'ta bir interface başka bir interface'ten kalıtım alabilir, yani kalıtımı destekler (I doğru, II yanlış). III de yanlıştır, çünkü struct'lar da interface uygulayabilir (ör. struct Nokta : IComparable). Bu nedenle yalnız I doğrudur.
II – Kalıtımı destekleme
III – Bir sınıf birden fazla Ara Birim kullanabilir.
C# programlama dilinde Ara Birim (interface) ile ilgili verilen ifadelerden hangisi/ hangileri doğrudur?
C#'ta interface'ler kalıtımı destekler: bir interface başka bir interface'ten türeyebilir. Ayrıca sınıflarda çoklu kalıtım olmasa da bir sınıf birden fazla interface uygulayabilir (class A : I1, I2). Bu yüzden I ve III doğrudur. Cevap anahtarı ise II'yi de içeren E şıkkını vermiştir.
II – Sınıf ve Yapılarında kullanılırlar
III – Ara Birimde tanımlı olan metotların varsayılan erişim seviyesi public tir.
C# programlama dilinde Ara Birim (interface) ile ilgili verilen ifadelerden hangisi/ hangileri doğrudur?
Üç ifade de doğrudur. Ara birimler interface anahtar kelimesiyle tanımlanır (I). Hem sınıflar hem de yapılar (struct) interface uygulayabilir (II). Interface içinde tanımlanan üyeler varsayılan olarak public kabul edilir ve klasik kullanımda ayrıca erişim belirleyici yazılmaz (III).
II – Statik ve Dinamik Çok Biçimliliği destekler.
III – Çok Biçimliliği desteklemez.
C# programlama dilinde Çok Biçimlilik (Polymorphism) ile ilgili verilen ifadelerden hangisi/ hangileri doğrudur?
C# iki tür çok biçimliliği de destekler. Statik (derleme zamanı) çok biçimlilik, metot ve operatör aşırı yükleme (overloading) ile sağlanır. Dinamik (çalışma zamanı) çok biçimlilik ise virtual/override ile metot ezme (overriding) ve interface'ler aracılığıyla sağlanır. Bu yüzden yalnız II doğrudur.
Aynı isme sahip ama farklı biçimlerde davranan metotların tanımlanabilmesine çok biçimlilik (polymorphism) denir. Bu, aşırı yükleme (overloading) ya da ezme (overriding) yoluyla yapılır. Kapsülleme ise veriyi gizleyip erişimi kontrol etmektir, isim paylaşımıyla bir ilgisi yoktur.
C#'ta bir sınıf yalnızca bir sınıftan türeyebilir, yani sınıflar için çoklu kalıtım desteklenmez. Bu eksiklik, bir sınıfın birden fazla interface uygulayabilmesiyle telafi edilir. Ara birim, operatör aşırı yükleme, çok biçimlilik ve kapsülleme ise C#'ta desteklenen kavramlardır.