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
에서 개체를 만들 수 없습니다.
shape
로 선언되었으므로 변수 shape1
및 shape2
는 파생 클래스 circle
및 square
의 개체로 제한됩니다. Visual Basic에서는 이러한 변수에 다른 개체를 할당하는 것을 허용하지 않으므로 높은 수준의 형식 안전성을 제공합니다.
사용
다음 컨텍스트에서 MustInherit
한정자를 사용할 수 있습니다.
참고 항목
.NET