다음을 통해 공유


Visual Basic 6.0 사용자를 위한 상속

업데이트: 2007년 11월

상속을 사용하면 기존 클래스에서 새로운 클래스를 만들 수 있습니다. 상속은 여러 클래스 간의 관계 구조를 제공하여 응용 프로그램의 디자인을 단순화할 수 있습니다. 또한 새로운 클래스나 다른 클래스의 동작만 코딩해야 하므로 코드의 재활용을 지원합니다.

인터페이스 상속

Visual Basic 6.0

Visual Basic 6.0에서는 인터페이스 상속을 지원합니다. 자세한 내용은 Visual Basic 6.0 사용자를 위한 인터페이스 변경 사항을 참조하십시오.

Visual Basic 2008

Visual Basic 2008에서는 Interface 문(Visual Basic)Implements 문을 사용하여 인터페이스 상속을 지원합니다. 인터페이스에 대한 자세한 내용은 Visual Basic의 인터페이스를 참조하십시오.

구현 상속

구현 상속을 통해 새 클래스를 만들면 이 새 클래스는 자동으로 기본 클래스의 모든 멤버와 구현을 얻게 됩니다. 기존 클래스를 "기본 클래스"라고 하고 새 클래스를 "파생 클래스"라고 합니다. 이 클래스에는 다른 멤버를 추가할 수 있습니다. 기본 클래스의 동작은 새 클래스에 코드를 작성하여 변경할 수 있습니다. 이 기술을 재정의라고 합니다.

사용자가 만든 클래스, 프로젝트에 추가한 참조의 클래스 또는 .NET Framework의 개체에서 상속하는 방법으로 클래스를 만들 수 있습니다. .NET Framework의 많은 클래스가 상속으로 연결되어 있습니다. 예를 들어, TextBox 클래스는 System.Windows.Forms.TextBoxBase 클래스에서 상속됩니다.

Visual Basic 6.0

Visual Basic 6.0에서는 구현 상속을 지원하지 않습니다.

Visual Basic 2008

Visual Basic 2008에서 상속은 Inherits 문에 의해 선언됩니다. 이 예제에서 Oak 파생 클래스는 기본 클래스인 Tree에서 상속됩니다.

Public Class Oak
    Inherits Tree
    ' Add code here to extend or 
    ' modify the behavior of the Tree class.
End Class

MustInherit 및 NotInheritable

Visual Basic 6.0

Visual Basic 6.0의 인터페이스 상속에서 모든 클래스는 인터페이스 기본 클래스로 사용될 수 있습니다. 클래스가 인터페이스 기본 클래스로 사용되지 않도록 하는 구문은 없습니다. 마찬가지로 클래스가 인터페이스 기본 클래스로만 사용되도록 하는 구문도 없습니다.

Visual Basic 2008

구현 상속을 지원하는 Visual Basic 2008에서는 두개의 클래스 한정자, 즉 MustInheritNotInheritable을 정의합니다. 이러한 한정자를 사용하면 프로그래머가 응용 프로그램에서 상속 관계를 제어할 수 있습니다.

클래스 선언에서 MustInherit 한정자는 인스턴스화할 수 없는 클래스를 나타냅니다.

Public MustInherit Class BaseClass
End Class

즉, BaseClass가 New 키워드 다음에 나올 수 없습니다. BaseClass에서 상속되고 MustInherit 한정자가 없는 클래스만 인스턴스화할 수 있습니다. 개체 지향 관련 문서 및 기타 개체 지향 언어에서는 MustInherit 클래스를 추상 클래스라고 합니다. MustInherit 클래스가 아니면서 인스턴스화할 수 없는 클래스는 구체 클래스라고 합니다.

관련 개념에는 기본 클래스로 사용할 수 없는 봉인 클래스가 있습니다. 클래스 정의의 NotInheritable 키워드는 이러한 상태를 나타냅니다.

Public NotInheritable Class DerivedClass
End Class

NotInheritable 클래스는 상속 계층 구조의 끝을 나타냅니다.

자세한 내용은 Visual Basic의 상속을 참조하십시오.

업그레이드 제안 사항

Visual Basic 6.0에서 인터페이스 역할을 하던 클래스는 Visual Basic 2008에서 인터페이스로 업그레이드되었습니다. 다음 예제에서 Visual Basic 6.0의 기본 클래스와 파생 클래스를 살펴보십시오.

' Contents of class BaseClass
Public Sub BaseMethod()
End Sub

' Contents of class DerivedClass
Implements BaseClass
Private Sub BaseClass_BaseMethod()
End Sub

업그레이드 마법사에서는 이렇게 업그레이드된 코드를 생성합니다.

Option Strict Off
Option Explicit On
Interface _BaseClass
    Sub BaseMethod()
End Interface

Friend Class BaseClass
    Implements _BaseClass
    Public Sub BaseMethod() Implements _BaseClass.BaseMethod
    End Sub
End Class

Friend Class DerivedClass
    Implements _BaseClass
    Private Sub BaseClass_BaseMethod() Implements _BaseClass.BaseMethod
    End Sub
End Class

인터페이스 대신 상속을 사용하면 업그레이드된 코드를 다음과 같이 수정할 수 있습니다.

Friend Class BaseClass
    Public Sub BaseMethod()
        ' Add code here to define BaseMethod.
    End Sub
End Class

Friend Class DerivedClass
    Inherits BaseClass
End Class

이렇게 하면 1 수준의 간접 참조인 _BaseClass가 제거됩니다. 또한 메서드가 기본 클래스에서 상속되어 다시 코딩할 필요가 없으므로 한 개의 메서드 정의 BaseClass_BaseMethod가 제거됩니다. 프로그래머가 파생 클래스에서 다른 동작을 수행하려면 BaseMethod를 다음과 같이 재정의합니다.

Friend Class BaseClass
    Public Overridable Sub BaseMethod()
        ' Add code here to define BaseMethod.
    End Sub
End Class

Friend Class DerivedClass
    Inherits BaseClass
    Public Overrides Sub BaseMethod()
        ' Add code here to define behavior for DerivedClass.
    End Sub
End Class

업그레이드된 인터페이스에서 고려할 몇 가지 기술은 다음과 같습니다.

  • Interface 문을 Inherits 문으로 바꿉니다.

  • 인터페이스를 구현하는 클래스가 아니라 인터페이스로 기본 클래스를 구현합니다. 자세한 내용은 Visual Basic 6.0 사용자를 위한 인터페이스 변경 사항을 참조하십시오.

  • 기본 클래스를 MustInherit 클래스로 구현합니다.

  • 파생 클래스를 NotInheritable로 구현합니다.

참고 항목

기타 리소스

Visual Basic의 상속

Visual Basic의 인터페이스