ProgramlamaVB.NET Geliştirici

Visual Basic'te kalıtım ve polimorfizm ile sınıf hiyerarşisini nasıl gerçekleştirebilirsiniz? Sanal yöntemlerin (Overridable/Overrides) nasıl doğru bir şekilde kullanılacağını açıklayın ve temel ve miras alınan sınıf ile bir kod örneği verin.

Hintsage yapay zeka asistanı ile mülakatları geçin

Cevap

Visual Basic .NET'te kalıtım Inherits anahtar kelimesi ile gerçekleştirilir. Ortak ve yeniden tanımlanabilir yöntemler ve özellikler içeren sınıf hiyerarşileri oluşturmayı sağlar.

Polimorfizmi desteklemek için, temel sınıftaki yöntemler Overridable belirteci ile tanımlanır ve türetilmiş sınıfta Overrides kullanılarak yeniden tanımlanır. Daha fazla yeniden tanımlamayı önlemek için NotOverridable belirteci kullanılır.

Örnek:

' Hayvan temel sınıfı sanal bir yöntem ile Public Class Animal Public Overridable Sub Speak() Console.WriteLine("Hayvan ses çıkarır.") End Sub End Class ' Köpek miras alan sınıfı Speak yöntemini yeniden tanımlıyor Public Class Dog Inherits Animal Public Overrides Sub Speak() Console.WriteLine("Köpek havlar.") End Sub End Class Sub Main() Dim a As Animal = New Dog() a.Speak() ' Çıktı: Köpek havlar. End Sub

Kandırmaca Soru

S: Visual Basic .NET'te temel sınıfta Overridable/Abstract olarak tanımlanmayan yöntemleri yeniden tanımlamak mümkün müdür?

C: Hayır. Sadece Overridable olarak işaretlenen veya bir arayüz/abstrakt ile belirtilen yöntemler kalıtımda yeniden tanımlanabilir. Normal bir yöntem için Overrides kullanmaya çalışmak derleme hatasına neden olacaktır.

' Hata: Public Class A Public Sub Foo() End Sub End Class Public Class B Inherits A Public Overrides Sub Foo() ' Derleme hatası End Sub End Class

Hikaye

1. Gerçek bir projede, mikro hizmet mimarisiyle ilgili, ekibin yeni bir üyesi temel sınıf kontrolcüsünde sanal bir yöntemi normal olarak (Overridable olmadan) tanımladı. Daha sonra başka bir geliştirici özel bir işleme için bu yöntemi yeniden tanımlamaya çalıştı. Sonuç olarak, miras alan sınıfta bir yöntem olmasına rağmen, ana uygulama her zaman çağrıldığından, mantığın tekrarı ve hatalar ortaya çıktı.


Hikaye

2. Mimari tasarımın yetersizliği ve polimorfizmin kullanılmaması, yeni bir mirasçı eklemenin gerektiğinde temel sınıf yönteminin büyük bir kısmını yeniden yazmayı zorunlu kılarak yüzlerce satırlık gereksiz koda yol açtı. Bu da bakım ve destek sürecini zorlaştırdı.


Hikaye

3. Bir kurumsal uygulama örneği: .NET Core'a geçişte bir geliştirici yöntemi Overridable olarak belirledi, ancak arayüzün Implements'ini yanlışlıkla eklemedi. Sonuç olarak, miras hiyerarşisinde yöntemlerin çözümünde belirsizlik ortaya çıktı ve arayüz referansı üzerinden çağrılarda sorunlar yaşandı, bu da işlevselliğin çalışmamasına yol açtı.