329 viewsC#new Yöntemleri Bildirme
0

C# new Yöntemleri Bildirme nasıl yapılır ?

Cevaplanan soru
0

Bilgisayar programlama dünyasında en zor problemlerden biri, tanımlayıcılar için benzersiz
ve anlamlı adlar bulmaktır. Bir sınıf için bir yöntem tanımlarsanız ve o sınıf bir kalıtım
hiyerarşisinin parçası ise, er ya da geç hiyerarşinin tepesindeki sınıflardan biri tarafından
kullanılmakta olan bir adı yeniden kullanmaya kalkışabilirsiniz. Temel bir sınıf ve türetilmiş bir
sınıf aynı imzalı (yöntem imzası, yöntemin adı ve parametrelerin tipi ve sayısıdır) iki yöntemi
bildirirse, uygulamayı derlerken hata alırsınız. Türetilmiş sınıftaki yöntem, temel sınıftaki aynı
imzaya sahip yöntemi maskeler (ya da gizler). Örneğin, aşağıdaki kodu derlerseniz, derleyici
Horse.Talk’ın miras alınmış Mammal.Talk’ı gizlediğini söyleyen bir uyarı iletisi oluşturacaktır:
class Mammal
{

public void Talk() // tüm memeliler konuşur
{

}
}
class Horse : Mammal
{

public void Talk() // atlar diğer memelilerden farklı yolla konuşur!
{

}
}
Kodunuz derlense ve çalışsa bile, bu uyarıyı ciddiye almalısınız. Başka bir sınıf, Horse
sınıfından türerse ve Talk yöntemini çağırırsa, Mammal sınıfındaki Talk yönteminin çağrıldığı
düşünülebilir. Ama, Horse sınıfındaki Talk yöntemi Mammal sınıfındaki Talk yöntemini gizler
ve bu nedenle Horse.Talk yöntemi çağrılır. Çoğu zaman, böyle bir rastlantı bir kargaşaya
neden olur ve karmaşıklığı önlemek için bu yöntemleri yeniden adlandırmayı düşünebilirsiniz.
Bununla birlikte, iki yöntemin aynı imzaya sahip olmasını istediğinizden, bu nedenle de
Mammal.Talk yöntemini gizlemek istediğinizden eminseniz, aşağıdaki gibi new anahtar
sözcüğünü kullanarak uyarıyı engelleyebilirsiniz:
class Mammal
{

public void Talk()
{

}
}
class Horse : Mammal
{

new public void Talk()
{

}
}
new anahtar sözcüğünü bu biçimde kullanmak, iki yöntemin halen tamamen ilişkisiz olduğu
ve gizlemenin halen var olduğu olgusunu değiştirmez. Yalnızca uyarıyı engeller. Sonuçta, new
anahtar sözcüğü, “Ben ne yaptığımı biliyorum, bu uyarıları artık gösterme.” demektir.

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