programing

VB에 매개 변수가 있는 하위 새(생성자)를 상속할 수 있습니까?

newstyles 2023. 5. 14. 10:26

VB에 매개 변수가 있는 하위 새(생성자)를 상속할 수 있습니까?

아래 코드에서 컴파일 오류가 발생합니다.

Error Too many arguments to 'Public Sub New()'

에서Dim TestChild As ChildClass = New ChildClass("c")다음 날짜에 수신되지 않습니다.TestChild.Method1()둘 다 제가 물려받은 기본 클래스에 속하지만요.

Public Class BaseClass
    Public ReadOnly Text As String
    Public Sub New(ByVal SetText As String)
        Text = SetText
    End Sub
    Public Sub New()
        Text = ""
    End Sub
End Class

Public Class ChildClass
    Inherits BaseClass
End Class

Public Class TestClass
    Sub Test()
        Dim TestChild As ChildClass = New ChildClass("c")
        TestChild.Method1()
    End Sub
End Class

하위 클래스를 다음으로 변경할 수 있습니다.

Public Class ChildClass
    Inherits BaseClass
      Public Sub New (ByVal SetText As String)
      MyBase.New(SetText)
    End Class
End Class

아래와 같이 Method 1이나 다른 상속된 방법에 대해서는 그렇게 할 필요가 없으며 가능한 가장 깨끗한 코드를 찾고 있습니다.이는 매개 변수화된 새 문을 상속하는 시스템에서 제한 사항일 수 있지만 어디에서도 문서화된 것을 찾을 수 없습니다.만약 그것이 필요하다면 저는 그 서류를 보고 싶습니다.

현재 표시되는 동작은 "설계별"입니다.하위 클래스는 기본 형식에서 생성자를 상속하지 않습니다.하위 클래스는 자체 생성자를 정의하는 역할을 합니다.또한 정의한 각 생성자가 기본 클래스 생성자에 암시적 또는 명시적으로 호출하거나 동일한 유형의 다른 생성자에 체인을 연결하는지 확인해야 합니다.

모든 자식 클래스에 동일한 생성자를 정의하고 MyBase를 통해 명시적으로 기본 생성자에 다시 연결해야 합니다.새것. 예

Class ChildClass
  Inherits BaseClass
  Public Sub New(text As String)
    MyBase.New(text)
  End Sub
End Class

찾고 있는 설명서는 VB 언어 사양의 섹션 9.3.1입니다.

제 생각에 가장 관련성이 높은 부분은 다음과 같습니다(두 번째 페이지의 대략적인 시작 부분).

유형에 인스턴스 생성자 선언이 없는 경우 기본 생성자가 자동으로 제공됩니다.기본 생성자는 직접 기본 유형의 매개 변수 없는 생성자만 호출합니다.

이것은 자식 클래스가 생성자를 상속하지 않는다는 것을 명시적으로 명시적으로 명시하지는 않지만 문의 부작용입니다.

매개 변수화된 생성자는 인스턴스 메서드와 동일한 방법으로 상속할 수 없습니다.자식 클래스에서 생성자를 구현한 다음 MyBase를 사용하여 부모의 생성자를 호출해야 합니다.

Public Class ChildClass
    Inherits BaseClass

    Public Sub New (ByVal SetText As String)
      MyBase.New(SetText)
    End Class
End Class

Public Class TestClass
  Public TestChild AS New ChildClass("c")
End Class

이 제한은 VB에만 해당되지 않습니다.제가 수집한 바로는 C#, Java 또는 C++에서도 절대로 불가능합니다.

다음은 C++에 대한 동일한 질문과 관련된 게시물입니다.
c-superclass-computer-computer-computer-comb

언급URL : https://stackoverflow.com/questions/789814/can-you-inherit-a-sub-new-constructor-with-parameters-in-vb