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
'programing' 카테고리의 다른 글
절인 개체를 로드할 수 없습니다. (0) | 2023.05.14 |
---|---|
C# 또는 . 최악의 gotchain입니다.NET? (0) | 2023.05.14 |
Mongoose(또는 MongoDB)에서 일시적인 트랜잭션 오류란 무엇입니까? (0) | 2023.05.14 |
Microsoft Excel 매크로 잠금 (0) | 2023.05.14 |
전체를 만드는 방법.NET Framework 애플리케이션을 단일 .exe 파일로 사용하시겠습니까? (0) | 2023.05.09 |