260 viewsC#Sınıflar Atama
0

C# Sınıflar Atama Nedir ?

Cevaplanan soru
0

Bu kitaptaki önceki örneklerde, bir sınıf türünü kullanarak bir değişkeni nasıl bildireceğinizi
ve daha sonra bir nesne yaratmak için new anahtar sözcüğünün kullanımını gördünüz. Ayrıca,
C#’daki tür denetim kurallarının bir türdeki nesneyi, farklı bir türde bildirilmiş bir değişkene
atamanızı engellediğini gördünüz. Örneğin, Mammal, Horse ve Whale sınıflarının burada
gösterilen tanımlarına göre aşağıdaki kod geçerlidir:
class Mammal
{

}
class Horse : Mammal
{

}
class Whale : Mammal
{

}

Horse myHorse = new Horse(“Neddy”); // önceki gösterilen kurucu bir ad bekler!
Whale myWhale = myHorse; // hata – farklı türler
Bununla birlikte, tür olarak kalıtım hiyerarşisinde üst sırada yer alan sınıf kullanıldığı sürece,
farklı türdeki bir değişkenindeki nesneye başvurmak mümkündür. Buna göre, aşağıdaki
ifadeler geçerli ifadelerdir:
Horse myHorse = new Horse(“Neddy”);
Mammal myMammal = myHorse; // doğru, Mammal Horse’un temel sınıfıdır
Mantıksal terimler olarak düşünürseniz, tüm Horse sınıfı, Mammal sınıfındadır, bu nedenle
Horse türü bir nesneyi Mammal türü bir değişkene güvenle atayabilirsiniz. Kalıtım hiyerarşisi,
Horse sınıfını birkaç ekstra bit ile (Horse sınıfına eklediğiniz yöntemler ve alanlar tarafından
tanımlanan), özel bir Mammal türü (Mammal türünün sahip olduğu herşeye sahiptir) olarak
düşünebileceğiniz anlamına gelir. Ayrıca, bir Mammal değişkeninin bir Whale nesnesine
başvurmasını sağlayabilirsiniz. Bununla birlikte, önemli bir kısıtlama vardır; bir Mammal
değişkeni kullanarak bir Horse ya da Whale nesnesine başvurduğunuzda, sadece Mammal
sınıfı tarafından tanımlanmış yöntemler ve alanlara erişebilirsiniz. Horse ya da Whale sınıfı
tarafından tanımlanmış ekstra yöntemlere, Mammal sınıfı üzerinden erişilemez.
Horse myHorse = new Horse(“Neddy”);
Mammal myMammal = myHorse;
myMammal.Breathe(); // Tamam – Breathe Mammal sınıfının parçasıdır
myMammal.Trot(); // hata – Trot Mammal sınıfının parçası değildir
Bunun tersinin doğru olmadığı konusunda uyarmalıyız. Bir Horse değişkenine koşulsuzca bir
Mammal nesnesi atayamazsınız:
Mammal myMammal = myMammal(“Mammalia”);
Horse myHorse = myMammal; // hata
Bu garip bir kısıtlama gibi görünüyor fakat tüm Mammal nesnelerinin Horse olmadığını,
bazılarının Whale olduğunu unutmayın. Bir Horse değişkenine bir Mammal nesnesi
atayabilirsiniz fakat ilk olarak as ya da is işleci kullanarak ya da bir atama (cast) kullanarak
Mammal nesnesinin gerçekten bir Horse olup olmadığını kontrol etmeniz gerekir. Aşağıdaki
kodda, myMammal değişkeninin bir Horse’a başvurup başvurmadığını denetlemek için
as işleci kullanılmıştır ve eğer başvuruyorsa, myHorseAgain ataması, aynı Horse nesnesine
başvuran myHorseAgain olarak sonuçlanır. myMammal değişkeni başka bir Mammal türüne
başvuruyorsa, as işleci null sonucu verir.
Horse myHorse = new Horse(“Neddy”);
Mammal myMammal = myHorse; // myMammal Horse’a başvurur

Horse myHorseAgain = myMammal as Horse; // Tamam – myMammal Horse’tu

Whale myWhale = new Whale(“Moby Dick”);
myMammal = myWhale;

myHorseAgain = myMammal as Horse; // null döndürür – myMammal Whale idi

Cevaplanan soru
Choose A Format
Personality quiz
Series of questions that intends to reveal something about the personality
Trivia quiz
Series of questions with right and wrong answers that intends to check knowledge
Poll
Voting to make decisions or determine opinions
Story
Formatted Text with Embeds and Visuals
List
The Classic Internet Listicles
Countdown
The Classic Internet Countdowns
Open List
Submit your own item and vote up for the best submission
Ranked List
Upvote or downvote to decide the best list item
Meme
Upload your own images to make custom memes
Video
Youtube, Vimeo or Vine Embeds
Audio
Soundcloud or Mixcloud Embeds
Image
Photo or GIF
Gif
GIF format