Class 문(Visual Basic)Class Statement (Visual Basic)

클래스의 이름을 선언 하 고 클래스에서 구성 하는 변수, 속성, 이벤트 및 프로시저의 정의를 소개 합니다.Declares the name of a class and introduces the definition of the variables, properties, events, and procedures that the class comprises.

구문Syntax

[ <attributelist> ] [ accessmodifier ] [ Shadows ] [ MustInherit | NotInheritable ] [ Partial ] _  
Class name [ ( Of typelist ) ]  
    [ Inherits classname ]  
    [ Implements interfacenames ]  
    [ statements ]  
End Class  

부분Parts

용어Term 정의Definition
attributelist 선택 사항입니다.Optional. 특성 목록을 참조 하십시오.See Attribute List.
accessmodifier 선택 사항입니다.Optional. 다음 중 하나일 수 있습니다.Can be one of the following:

- 공개적- Public
- 보호- Protected
- Friend- Friend
- 문자- Private
- 보호 된 Friend- Protected Friend
- 개인 보호- Private Protected

Access levels in Visual Basic을 참조하세요.See Access levels in Visual Basic.
Shadows 선택 사항입니다.Optional. 그림자를 참조 하세요.See Shadows.
MustInherit 선택 사항입니다.Optional. MustInherit을 참조 하십시오.See MustInherit.
NotInheritable 선택 사항입니다.Optional. NotInheritable를 참조 하세요.See NotInheritable.
Partial 선택 사항입니다.Optional. 클래스의 부분 정의를 나타냅니다.Indicates a partial definition of the class. 부분을 참조 하세요.See Partial.
name 필수 사항입니다.Required. 이 클래스의 이름입니다.Name of this class. Declared Element Names을 참조하세요.See Declared Element Names.
Of 선택 사항입니다.Optional. 제네릭 클래스 임을 지정 합니다.Specifies that this is a generic class.
typelist Of 키워드를 사용 하는 경우 필수 사항입니다.Required if you use the Of keyword. 이 클래스에 대 한 형식 매개 변수 목록입니다.List of type parameters for this class. 형식 목록을 참조 하십시오.See Type List.
Inherits 선택 사항입니다.Optional. 이 클래스가 다른 클래스의 멤버를 상속 함을 나타냅니다.Indicates that this class inherits the members of another class. Inherits 문을 참조 하세요.See Inherits Statement.
classname 문을 사용 하는 경우 필요 Inherits 합니다.Required if you use the Inherits statement. 이 클래스가 파생 되는 클래스의 이름입니다.The name of the class from which this class derives.
Implements 선택 사항입니다.Optional. 이 클래스가 하나 이상의 인터페이스의 멤버를 구현 함을 나타냅니다.Indicates that this class implements the members of one or more interfaces. Implements 문을 참조 하세요.See Implements Statement.
interfacenames 문을 사용 하는 경우 필요 Implements 합니다.Required if you use the Implements statement. 이 클래스가 구현 하는 인터페이스의 이름입니다.The names of the interfaces this class implements.
statements 선택 사항입니다.Optional. 이 클래스의 멤버를 정의 하는 문입니다.Statements which define the members of this class.
End Class 필수 사항입니다.Required. 정의를 종료 Class 합니다.Terminates the Class definition.

설명Remarks

Class문은 새 데이터 형식을 정의 합니다.A Class statement defines a new data type. 클래스 는 OOP (개체 지향 프로그래밍)의 기본 빌딩 블록입니다.A class is a fundamental building block of object-oriented programming (OOP). 자세한 내용은 개체 및 클래스를 참조 하세요.For more information, see Objects and Classes.

Class 네임 스페이스 또는 모듈 수준 에서만 사용할 수 있습니다.You can use Class only at namespace or module level. 즉, 클래스의 선언 컨텍스트 는 소스 파일, 네임 스페이스, 클래스, 구조체, 모듈 또는 인터페이스 여야 하며 프로시저 또는 블록일 수 없습니다.This means the declaration context for a class must be a source file, namespace, class, structure, module, or interface, and cannot be a procedure or block. 자세한 내용은 선언 컨텍스트 및 기본 액세스 수준을 참조하세요.For more information, see Declaration Contexts and Default Access Levels.

클래스의 각 인스턴스에는 다른 모든 인스턴스와 독립적인 수명이 있습니다.Each instance of a class has a lifetime independent of all other instances. 이 수명은 새 Operator 절 또는와 같은 함수에 의해 생성 될 때 시작 됩니다 CreateObject .This lifetime begins when it is created by a New Operator clause or by a function such as CreateObject. 인스턴스를 가리키는 모든 변수가 Nothing 또는 다른 클래스의 인스턴스로 설정 된 경우 종료 됩니다.It ends when all variables pointing to the instance have been set to Nothing or to instances of other classes.

클래스의 기본값은 Friend 액세스입니다.Classes default to Friend access. 액세스 한정자를 사용 하 여 액세스 수준을 조정할 수 있습니다.You can adjust their access levels with the access modifiers. 자세한 내용은 Visual Basic의 액세스 수준을 참조 하세요.For more information, see Access levels in Visual Basic.

규칙Rules

  • 중첩할.Nesting. 다른 클래스 내에서 클래스 하나를 정의할 수 있습니다.You can define one class within another. 외부 클래스를 포함 하는 클래스라고 하 고 내부 클래스를 중첩 클래스라고 합니다.The outer class is called the containing class, and the inner class is called a nested class.

  • 상.Inheritance. 클래스가 Inherits 문을사용 하는 경우 기본 클래스 또는 인터페이스를 하나만 지정할 수 있습니다.If the class uses the Inherits Statement, you can specify only one base class or interface. 클래스는 둘 이상의 요소에서 상속할 수 없습니다.A class cannot inherit from more than one element.

    클래스는 더 제한적인 액세스 수준을 가진 다른 클래스에서 상속할 수 없습니다.A class cannot inherit from another class with a more restrictive access level. 예를 들어 클래스는 Public 클래스에서 상속할 수 없습니다 Friend .For example, a Public class cannot inherit from a Friend class.

    클래스는 그 안에 중첩 된 클래스에서 상속할 수 없습니다.A class cannot inherit from a class nested within it.

  • 구현이.Implementation. 클래스가 Implements 문을사용 하는 경우에서 지정 하는 모든 인터페이스에서 정의 된 모든 멤버를 구현 해야 합니다 interfacenames .If the class uses the Implements Statement, you must implement every member defined by every interface you specify in interfacenames. 이에 대 한 예외는 기본 클래스 멤버의 재구현입니다.An exception to this is reimplementation of a base class member. 자세한 내용은 Implements의 "재구현"를 참조 하십시오.For more information, see "Reimplementation" in Implements.

  • 기본 속성입니다.Default Property. 클래스는 최대 하나의 속성을 기본 속성으로 지정할 수 있습니다.A class can specify at most one property as its default property. 자세한 내용은 기본값을 참조 하세요.For more information, see Default.

동작Behavior

  • 액세스 수준입니다.Access Level. 클래스 내에서 각 멤버를 고유한 액세스 수준으로 선언할 수 있습니다.Within a class, you can declare each member with its own access level. 클래스 멤버는 기본적으로 Private access로 사용 되는 변수 및 상수를 제외 하 고 공용 액세스를 사용 합니다.Class members default to Public access, except variables and constants, which default to Private access. 클래스의 멤버 중 하나 보다 제한 된 액세스 권한이 있는 경우 클래스 액세스 수준이 우선적으로 적용 됩니다.When a class has more restricted access than one of its members, the class access level takes precedence.

  • 범위.Scope. 클래스는 포함 하는 네임 스페이스, 클래스, 구조체 또는 모듈 전체에 걸쳐 있습니다.A class is in scope throughout its containing namespace, class, structure, or module.

    모든 클래스 멤버의 범위는 전체 클래스입니다.The scope of every class member is the entire class.

    수명.Lifetime. Visual Basic는 정적 클래스를 지원 하지 않습니다.Visual Basic does not support static classes. 정적 클래스와 동일한 기능을 모듈에서 제공 합니다.The functional equivalent of a static class is provided by a module. 자세한 내용은 Module 문을 참조 하세요.For more information, see Module Statement.

    클래스 멤버의 수명은 선언 된 방법과 위치에 따라 달라 집니다.Class members have lifetimes depending on how and where they are declared. 자세한 내용은 Visual Basic 수명을 참조 하세요.For more information, see Lifetime in Visual Basic.

  • 조인의.Qualification. 클래스 외부의 코드는 해당 클래스의 이름을 사용 하 여 멤버의 이름을 정규화 해야 합니다.Code outside a class must qualify a member's name with the name of that class.

    중첩 된 클래스 내의 코드가 프로그래밍 요소에 대 한 정규화 되지 않은 참조를 만드는 경우, Visual Basic는 중첩 된 클래스에서 먼저 요소를 검색 한 다음 해당 요소를 포함 하는 클래스에서 가장 바깥쪽 포함 요소로 검색 합니다.If code inside a nested class makes an unqualified reference to a programming element, Visual Basic searches for the element first in the nested class, then in its containing class, and so on out to the outermost containing element.

클래스 및 모듈Classes and Modules

이러한 요소에는 여러 가지 유사점이 있지만 몇 가지 중요 한 차이점도 있습니다.These elements have many similarities, but there are some important differences as well.

  • 용어Terminology. 이전 버전의 Visual Basic에서는 클래스 모듈 (cls 파일)과 표준 모듈 (bas 파일)의 두 가지 모듈 형식을 인식 합니다.Previous versions of Visual Basic recognize two types of modules: class modules (.cls files) and standard modules (.bas files). 현재 버전은 이러한 클래스모듈을 각각 호출 합니다.The current version calls these classes and modules, respectively.

  • 공유 멤버.Shared Members. 클래스의 멤버가 공유 또는 인스턴스 멤버 인지 여부를 제어할 수 있습니다.You can control whether a member of a class is a shared or instance member.

  • 개체 방향입니다.Object Orientation. 클래스는 개체 지향적 이지만 모듈은 그렇지 않습니다.Classes are object-oriented, but modules are not. 클래스의 인스턴스를 하나 이상 만들 수 있습니다.You can create one or more instances of a class. 자세한 내용은 개체 및 클래스를 참조 하세요.For more information, see Objects and Classes.

예제Example

다음 예제에서는 문을 사용 하 여 Class 클래스와 여러 멤버를 정의 합니다.The following example uses a Class statement to define a class and several members.

Class BankAccount
    Shared interestRate As Decimal
    Private accountNumber As String
    Private accountBalance As Decimal
    Public holdOnAccount As Boolean = False

    Public ReadOnly Property Balance() As Decimal
        Get
            Return accountBalance
        End Get
    End Property

    Public Sub PostInterest()
        accountBalance = accountBalance * (1 + interestRate)
    End Sub

    Public Sub PostDeposit(ByVal amountIn As Decimal)
        accountBalance = accountBalance + amountIn
    End Sub

    Public Sub PostWithdrawal(ByVal amountOut As Decimal)
        accountBalance = accountBalance - amountOut
    End Sub
End Class

참조See also