2010-11-19 18 views
1

İki alt sınıflı vb.net'de soyut bir sınıf var. soyut sınıfta ben şöyle bir constuctor vardır:Özet Sınıfında Aşırı Yüklenmiş Oluşturucu, vb.NET

Public Sub New(arg1 as String, arg2 as String) 
    Me.arg1 = arg1 
    Me.arg2 = arg2 
End Sub 

Ben herhangi bir argüman alıp sadece varsayılan değerlere args başlatır olmayan bir ikinci yapıcı oluşturmak istiyoruz. Bu şuna benzer:

Public Sub New() 
    Me.arg1 = "123" 
    Me.arg2 = "456" 
End Sub 

Ben derleyici ben kurucusuna iki bağımsız değişken eksik olduğunu yakınır ikinci yapıcısı kullanarak yeni alt sınıfı oluşturmak için girişimi .... bir nedeni var mı Yapamam soyut sınıftaki kurucuya aşırı yüklenme?

Teşekkürler

+0

Tüm sınıf kodunuzu kaydeder misiniz? Şerefe. –

cevap

3

VB'de "soyut" yoktur. Eğer C# cinsinden soyutlamayı kastediyorsanız (VB paritesinde MustInherit), kurucuların miras almadığı için alt sınıflarınızdaki her iki kurucuyu tanımlamanız gerekir.

Örnek: İkinci yapıcı alt sınıfında ise

Public MustInherit Class SuperClass 
    Public Property ValueOne As String = String.Empty 

    Public Property ValueTwo As String = String.Empty 


    Public Sub New() 

     Me.New("123", "456") 

    End Sub 

    Public Sub New(ByVal tValueOne As String, ByVal tValueTwo As String) 

     Me.ValueOne = tValueOne 
     Me.ValueTwo = tValueTwo 

    End Sub  
End Class 



Public Class SubClass 
    Inherits SuperClass 


    Public Sub New() 

     MyBase.New() 

    End Sub 

    Public Sub New(ByVal tValueOne As String, ByVal tValueTwo As String) 

     MyBase.New(tValueOne, tValueTwo) 

    End Sub 

End Class 
+1

Abstract Bilgisayar bilimi kavramdır. –

+0

SubClass'ın, temel sınıfının her ikisine birden sahip olduğu için her iki kurucunun da olması gerekmez. Tek kural, temel sınıfta bir kurucu çağırmasıdır. –

+0

Elbette. Ancak, op iki ctor kullanarak sordu. –

0

, bu temel sınıfta kurucusunu çağırmak zorundadır.

Public Sub New() 
    MyBase.New("123", "456") 
End Sub 
İlgili konular