다음을 통해 공유


MustInherit(Visual Basic)

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

설명

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

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

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

규칙

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

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

예시

다음 예에서는 강제 상속과 강제 재정의를 모두 보여 줍니다. 기본 클래스 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

shape1shape2shape 형식으로 선언할 수 있습니다. 그러나 area 기능의 기능이 부족하고 MustInherit로 표시되어 있으므로 shape에서 개체를 만들 수 없습니다.

shape로 선언되었으므로 변수 shape1shape2는 파생 클래스 circlesquare의 개체로 제한됩니다. Visual Basic에서는 이러한 변수에 다른 개체를 할당하는 것을 허용하지 않으므로 높은 수준의 형식 안전성을 제공합니다.

사용

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

Class 문

참고 항목