2010-11-19 4 views
1

두 개의 하위 클래스가있는 vb.net의 추상 클래스가 있습니다. 추상 클래스에서 나는이처럼 보이는 constructor에 있습니다vb.net 추상 클래스의 오버로드 된 생성자

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

내가 어떤 인수를 그냥 값을 기본값으로 인수를 초기화하지 않는 두 번째 생성자를 만들고 싶습니다. 그것은 다음과 같을 것이다 :

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

내가 컴파일러는 내가 생성자에 두 개의 인수를 누락 불평 두 번째 생성자를 사용하여 새 서브 클래스를 만들려고 .... 이유가 거기에 그럴 수 없어 추상 클래스에서 생성자를 오버로드 하시겠습니까?

감사

+0

모든 클래스 코드를 게시 할 수 있습니까? 건배. –

답변

3

더 "추상적"는 VB에 없습니다. C#에서 추상화를 의미하는 경우 (VB 내에서 MustInherit), 생성자가 상속되지 않으므로 하위 클래스에 두 생성자를 모두 정의해야합니다.

예 : 두 번째 생성자는 서브 클래스에있는 경우

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

초록은 컴퓨터 과학 용어입니다. –

+0

SubClass는 기본 클래스가 둘 다 있기 때문에 두 생성자를 모두 가질 필요는 없습니다. 유일한 규칙은 기본 클래스에서 생성자를 호출한다는 것입니다. –

+0

물론. 그러나, op는 두 개의 ctor를 사용하는 것에 대해 질문했습니다. –

0

, 그것은 기본 클래스의 생성자를 호출해야합니다.

Public Sub New() 
    MyBase.New("123", "456") 
End Sub 
관련 문제