다음을 통해 공유


MustInherit(Visual Basic)

클래스를 기본 클래스로만 사용할 수 있고 개체를 직접 만들 수 없게 지정합니다.

비고

기본 클래스(추상 클래스라고도 함)의 목적은 파생된 모든 클래스에 공통적인 기능을 정의하는 것입니다. 이렇게 하면 파생 클래스가 공통 요소를 다시 정의할 필요가 없습니다. 경우에 따라 이 일반적인 기능은 사용 가능한 개체를 만들기에 충분하지 않으며 각 파생 클래스는 누락된 기능을 정의합니다. 이러한 경우 사용하는 코드가 파생 클래스에서만 개체를 만들도록 합니다. 기본 클래스에서 이를 적용하는 데 사용합니다 MustInherit .

클래스의 MustInherit 또 다른 사용은 변수를 관련 클래스 집합으로 제한하는 것입니다. 기본 클래스를 정의하고 이러한 모든 관련 클래스를 파생시킬 수 있습니다. 기본 클래스는 모든 파생 클래스에 공통적인 기능을 제공할 필요는 없지만 변수에 값을 할당하기 위한 필터 역할을 할 수 있습니다. 사용하는 코드에서 변수를 기본 클래스로 선언하는 경우 Visual Basic을 사용하면 파생 클래스 중 하나의 개체만 해당 변수에 할당할 수 있습니다.

.NET Framework는 여러 MustInherit 클래스를 정의합니다.ArrayEnumValueType ValueType 는 변수를 제한하는 기본 클래스의 예입니다. 모든 값 형식은 .에서 ValueType파생됩니다. 변수를 선언하는 경우 해당 변수 ValueType에 값 형식만 할당할 수 있습니다.

규칙

  • 선언 컨텍스트입니다. 문에서 Class 만 사용할 MustInherit 수 있습니다.

  • 결합된 한정자입니다. 동일한 선언에서 NotInheritable 함께 지정할 MustInherit 수 없습니다.

예시

다음 예제에서는 강제 상속 및 강제 재정의를 보여 줍니다. 기본 클래스 shape 는 변수 acrossLine를 정의합니다. 클래스 및 circlesquare 파생 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선언되므로 파생 클래스 및 shape2 개체로 제한됩니다 circlesquare.shape1 Visual Basic에서는 이러한 변수에 다른 개체를 할당할 수 없으므로 높은 수준의 형식 안전성이 있습니다.

사용법

한정자는 다음 MustInherit 컨텍스트에서 사용할 수 있습니다.

Class 문

참고하십시오