Visual Basic의 액세스 수준

선언 요소의 액세스 수준은 해당 요소에 액세스할 수 있는 범위, 즉 해당 요소를 읽거나 쓸 수 있는 코드 범위를 나타냅니다. 액세스 수준은 요소 자체를 선언한 방법뿐만 아니라 해당 요소의 컨테이너에 대한 액세스 수준에 의해서도 결정됩니다. 포함하는 요소에 액세스할 수 없는 코드는 포함된 모든 요소에도 액세스할 수 없습니다. 이는 포함된 요소가 Public으로 선언된 경우에도 해당됩니다. 예를 들어, Private 구조체의 Public 변수는 해당 구조체를 포함하는 클래스 내에서는 액세스할 수 있지만 외부에서는 액세스할 수 없습니다.

Public

선언 문에서 Public(Visual Basic) 키워드로 선언된 요소는 같은 프로젝트의 코드, 해당 프로젝트를 참조하는 다른 프로젝트 및 해당 프로젝트에서 빌드된 어셈블리에서 액세스할 수 있습니다. 다음 코드는 Public 선언의 예입니다.

Public Class classForEverybody

Public 키워드는 모듈, 인터페이스 또는 네임스페이스 수준에서만 사용할 수 있습니다. 즉, public 요소는 소스 파일 또는 네임스페이스의 수준이나 인터페이스, 모듈, 클래스 또는 구조체 내에서 선언할 수 있지만 프로시저에서는 선언할 수 없습니다.

보호됨

선언 문에서 Protected(Visual Basic) 키워드로 선언된 요소는 같은 클래스 또는 해당 클래스에서 파생된 클래스에서만 액세스할 수 있습니다. 다음 코드는 Protected 선언의 예입니다.

Protected Class classForMyHeirs

Protected는 클래스의 멤버를 선언할 때 클래스 수준에서만 사용할 수 있습니다. 즉, protected 요소는 클래스에서 선언할 수 있지만 소스 파일 또는 네임스페이스의 수준이나 인터페이스, 모듈, 구조체 또는 프로시저 내에서는 선언할 수 없습니다.

Friend

선언 문에서 Friend(Visual Basic) 키워드로 선언된 요소는 같은 어셈블리 내에서만 액세스할 수 있고 어셈블리 외부에서는 액세스할 수 없습니다. 다음 코드는 Friend 선언의 예입니다.

Friend stringForThisProject As String

Friend 키워드는 모듈, 인터페이스 또는 네임스페이스 수준에서만 사용할 수 있습니다. 즉, friend 요소는 소스 파일 또는 네임스페이스의 수준이나 인터페이스, 모듈, 클래스 또는 구조체 내에서 선언할 수 있지만 프로시저에서는 선언할 수 없습니다.

Protected Friend

선언 문에서 Protected와 Friend 키워드로 선언된 요소는 파생된 클래스나 같은 어셈블리 내에서 액세스할 수 있습니다. 다음 코드는 Protected Friend 선언의 예입니다.

Protected Friend stringForProjectAndHeirs As String

Protected Friend는 클래스 수준에서, 클래스의 멤버를 선언할 때만 사용할 수 있습니다. 즉, protected friend 요소는 클래스에서 선언할 수 있지만 소스 파일 또는 네임스페이스의 수준이나 인터페이스, 모듈, 구조체 또는 프로시저 내에서는 선언할 수 없습니다.

전용

선언 문에서 Private(Visual Basic)으로 선언된 키워드는 같은 모듈, 클래스 또는 구조체 내에서만 액세스할 수 있습니다. 다음 코드는 Private 선언의 예입니다.

Private numberForMeOnly As Integer

Private 키워드는 모듈 수준에서만 사용할 수 있습니다. 즉, private 요소는 모듈, 클래스 또는 구조체 내에서 선언할 수 있지만 소스 파일 또는 네임스페이스의 수준이나 인터페이스 또는 프로시저에서는 선언할 수 없습니다.

모듈 수준에서 액세스 수준 키워드가 지정되지 않은 Dim 문은 Private 선언과 동일합니다. 그러나 Private 키워드를 사용하면 더 쉽게 코드를 읽고 해석할 수 있습니다.

액세스 한정자

액세스 수준을 지정하는 키워드를 액세스 한정자라고 합니다. 다음 표에서는 액세스 한정자를 비교합니다.

액세스 한정자

부여된 액세스 수준

이 액세스 수준으로 선언할 수 있는 요소

이 한정자를 사용할 수 있는 선언 컨텍스트

Public

무제한:

public 요소를 볼 수 있는 모든 코드에서 액세스할 수 있음

인터페이스

모듈

클래스

구조체

구조체 멤버

절차

속성

멤버 변수

상수

열거형

이벤트

외부 선언

대리자

소스 파일

Namespace

인터페이스

모듈

클래스

구조체

Protected

파생:

protected 요소를 선언하는 클래스 또는 이 클래스에서 파생된 클래스의 코드에서 액세스할 수 있음

인터페이스

클래스

구조체

절차

속성

멤버 변수

상수

열거형

이벤트

외부 선언

대리자

클래스

Friend

어셈블리:

friend 요소를 선언하는 어셈블리의 코드에서 액세스할 수 있음

인터페이스

모듈

클래스

구조체

구조체 멤버

절차

속성

멤버 변수

상수

열거형

이벤트

외부 선언

대리자

소스 파일

Namespace

인터페이스

모듈

클래스

구조체

Protected Friend

Protected와 Friend의 통합:

protected friend 요소와 동일한 클래스 또는 어셈블리 내의 코드나 해당 요소의 클래스에서 파생된 모든 클래스의 코드에서 액세스할 수 있음

인터페이스

클래스

구조체

절차

속성

멤버 변수

상수

열거형

이벤트

외부 선언

대리자

클래스

Private

선언 컨텍스트:

private 요소를 선언하는 형식의 코드와 포함된 형식 내의 코드에서 액세스할 수 있음

인터페이스

클래스

구조체

구조체 멤버

절차

속성

멤버 변수

상수

열거형

이벤트

외부 선언

대리자

모듈

클래스

구조체

참고 항목

작업

방법: 변수의 사용 가능성 제어(Visual Basic)

참조

Dim 문(Visual Basic)

Static(Visual Basic)

개념

선언된 요소 이름(Visual Basic)

선언된 요소 특성(Visual Basic)

Visual Basic의 수명

Visual Basic의 범위

Visual Basic의 변수

Visual Basic의 변수 선언

기타 리소스

선언된 요소 참조(Visual Basic)