MustInherit(Visual Basic)
클래스를 기본 클래스로만 사용할 수 있으며 이 클래스에서 개체를 직접 만들 수 없도록 지정합니다.
설명
기본 클래스(추상 클래스라고도 함)는 기본 클래스로부터 파생된 모든 클래스에 공통되는 기능을 정의하는 것입니다.이렇게 하면 파생 클래스는 공통 요소를 다시 정의할 필요가 없습니다.경우에 따라 이 공통 기능은 유용한 개체를 만들 수 있을 만큼 완벽하지 않으므로 누락된 기능은 각 파생 클래스에서 정의됩니다.이러한 경우에는 사용하는 코드에서 파생 클래스에서만 개체를 만들도록 할 수 있습니다.기본 클래스에서 MustInherit를 사용하여 이를 적용할 수 있습니다.
또한 관련된 클래스 집합에만 설정되도록 변수를 제한하려는 경우에 MustInherit 클래스를 사용합니다.기본 클래스를 정의하고 이러한 모든 관련 클래스를 기본 클래스로부터 파생시킬 수 있습니다.기본 클래스는 모든 파생 클래스에 공통된 기능을 제공할 필요는 없지만 변수에 값을 할당하기 위한 필터로 사용될 수 있습니다.사용하는 코드에서 변수를 기본 클래스로 선언할 경우 Visual Basic에서는 파생 클래스 중 하나의 개체만 해당 변수에 할당할 수 있습니다.
.NET Framework는 Array, Enum, ValueType 등을 비롯하여 여러 MustInherit 클래스를 정의합니다.ValueType은 변수를 제한하는 기본 클래스의 한 예입니다.모든 값 형식은 ValueType에서 파생됩니다.변수를 ValueType으로 선언할 경우 값 형식만 해당 변수에 할당할 수 있습니다.
규칙
**선언 컨텍스트.**Class 문에서만 MustInherit를 사용할 수 있습니다.
결합 한정자. 하나의 선언에서 MustInherit를 NotInheritable과 함께 지정할 수 없습니다.
예제
다음은 강제 상속과 강제 재정의에 대한 예입니다.기본 클래스 shape는 acrossLine 변수를 정의합니다.circle 및 square 클래스는 shape에서 파생됩니다.이러한 클래스는 acrossLine의 정의를 상속하지만 각 도형 유형에 대한 계산이 다르기 때문에 area 함수를 정의해야 합니다.
Public MustInherit Class shape
Public acrossLine As Double
Public MustOverride Function area() As Double
End Class
Public Class circle : Inherits shape
Public Overrides Function area() As Double
Return Math.PI * acrossLine
End Function
End Class
Public Class square : Inherits shape
Public Overrides Function area() As Double
Return acrossLine * acrossLine
End Function
End Class
Public Class consumeShapes
Public Sub makeShapes()
Dim shape1, shape2 As shape
shape1 = New circle
shape2 = New square
End Sub
End Class
shape1 및 shape2를 shape 형식으로 선언할 수 있습니다.그러나 area 함수 기능이 없고 MustInherit 표시가 있기 때문에 shape에서는 개체를 만들 수 없습니다.
shape1 및 shape2 변수는 shape로 선언되기 때문에 파생 클래스 circle 및 square의 개체만 사용하도록 제한됩니다.Visual Basic에서는 이러한 변수에 다른 개체를 할당할 수 없기 때문에 형식 안전성이 향상됩니다.
용도
MustInherit 한정자는 다음 컨텍스트에서 사용할 수 있습니다.