Visual Basic의 액세스 수준
선언 요소의 액세스 수준은 해당 요소에 액세스할 수 있는 범위, 즉 해당 요소를 읽거나 쓸 수 있는 코드 범위를 나타냅니다.액세스 수준은 요소 자체를 선언한 방법뿐만 아니라 해당 요소의 컨테이너에 대한 액세스 수준에 의해서도 결정됩니다.포함하는 요소에 액세스할 수 없는 코드는 포함된 모든 요소에도 액세스할 수 없습니다. 이는 포함된 요소가 Public으로 선언된 경우에도 해당됩니다.예를 들어, Private 구조체의 Public 변수는 해당 구조체를 포함하는 클래스 내에서는 액세스할 수 있지만 외부에서는 액세스할 수 없습니다.
Public
선언 문에서 Public(Visual Basic) 키워드로 선언된 요소는 같은 프로젝트의 코드, 해당 프로젝트를 참조하는 다른 프로젝트 및 해당 프로젝트에서 빌드된 어셈블리에서 액세스할 수 있습니다.다음 코드는 Public 선언의 예입니다.
Public Class classForEverybody
Public 키워드는 모듈, 인터페이스 또는 네임스페이스 수준에서만 사용할 수 있습니다.즉, public 요소는 소스 파일 또는 네임스페이스의 수준이나 인터페이스, 모듈, 클래스 또는 구조체 내에서 선언할 수 있지만 프로시저에서는 선언할 수 없습니다.
Protected
선언 문에서 Protected(Visual Basic) 키워드로 선언된 요소는 같은 클래스 또는 해당 클래스에서 파생된 클래스에서만 액세스할 수 있습니다.다음 코드는 Protected 선언의 예입니다.
Protected Class classForMyHeirs
Protected는 클래스의 멤버를 선언할 때 클래스 수준에서만 사용할 수 있습니다.즉, protected 요소는 클래스에서 선언할 수 있지만 소스 파일 또는 네임스페이스의 수준이나 인터페이스, 모듈, 구조체 또는 프로시저 내에서는 선언할 수 없습니다.
Friend
선언 문에서 Friend(Visual Basic) 키워드로 선언된 요소는 같은 어셈블리 내에서만 액세스할 수 있고 어셈블리 외부에서는 액세스할 수 없습니다.다음 코드는 Friend 선언의 예입니다.
Friend stringForThisProject As String
Friend 키워드는 모듈, 인터페이스 또는 네임스페이스 수준에서만 사용할 수 있습니다.즉, friend 요소는 소스 파일 또는 네임스페이스의 수준이나 인터페이스, 모듈, 클래스 또는 구조체 내에서 선언할 수 있지만 프로시저에서는 선언할 수 없습니다.
Protected Friend
선언 문에서 Protected와 Friend 키워드로 선언된 요소는 파생된 클래스나 같은 어셈블리 내에서 액세스할 수 있습니다.다음 코드는 ProtectedFriend 선언의 예입니다.
Protected Friend stringForProjectAndHeirs As String
ProtectedFriend는 클래스 수준에서, 클래스의 멤버를 선언할 때만 사용할 수 있습니다.즉, protected friend 요소는 클래스에서 선언할 수 있지만 소스 파일 또는 네임스페이스의 수준이나 인터페이스, 모듈, 구조체 또는 프로시저 내에서는 선언할 수 없습니다.
Private
선언 문에서 Private(Visual Basic)으로 선언된 키워드는 같은 모듈, 클래스 또는 구조체 내에서만 액세스할 수 있습니다.다음 코드는 Private 선언의 예입니다.
Private numberForMeOnly As Integer
Private 키워드는 모듈 수준에서만 사용할 수 있습니다.즉, private 요소는 모듈, 클래스 또는 구조체 내에서 선언할 수 있지만 소스 파일 또는 네임스페이스의 수준이나 인터페이스 또는 프로시저에서는 선언할 수 없습니다.
모듈 수준에서 액세스 수준 키워드가 지정되지 않은 Dim 문은 Private 선언과 동일합니다.그러나 Private 키워드를 사용하면 더 쉽게 코드를 읽고 해석할 수 있습니다.
액세스 한정자
액세스 수준을 지정하는 키워드를 액세스 한정자라고 합니다.다음 표에서는 액세스 한정자를 비교합니다.
액세스 한정자 |
부여된 액세스 수준 |
이 액세스 수준으로 선언할 수 있는 요소 |
이 한정자를 사용할 수 있는 선언 컨텍스트 |
---|---|---|---|
Public |
무제한: public 요소를 볼 수 있는 모든 코드에서 액세스할 수 있음 |
인터페이스 모듈 클래스 구조체 구조체 멤버 절차 속성 멤버 변수 상수 열거형 이벤트 외부 선언 대리자 |
소스 파일 Namespace Interface 모듈 클래스 구조체 |
Protected |
파생: protected 요소를 선언하는 클래스 또는 이 클래스에서 파생된 클래스의 코드에서 액세스할 수 있음 |
인터페이스 클래스 구조체 절차 속성 멤버 변수 상수 열거형 이벤트 외부 선언 대리자 |
클래스 |
Friend |
어셈블리: friend 요소를 선언하는 어셈블리의 코드에서 액세스할 수 있음 |
인터페이스 모듈 클래스 구조체 구조체 멤버 절차 속성 멤버 변수 상수 열거형 이벤트 외부 선언 대리자 |
소스 파일 Namespace Interface 모듈 클래스 구조체 |
ProtectedFriend |
Protected와 Friend의 통합: protected friend 요소와 동일한 클래스 또는 어셈블리 내의 코드나 해당 요소의 클래스에서 파생된 모든 클래스의 코드에서 액세스할 수 있음 |
인터페이스 클래스 구조체 절차 속성 멤버 변수 상수 열거형 이벤트 외부 선언 대리자 |
클래스 |
Private |
선언 컨텍스트: private 요소를 선언하는 형식의 코드와 포함된 형식 내의 코드에서 액세스할 수 있음 |
인터페이스 클래스 구조체 구조체 멤버 절차 속성 멤버 변수 상수 열거형 이벤트 외부 선언 대리자 |
모듈 클래스 구조체 |
참고 항목
작업
방법: 변수의 사용 가능성 제어(Visual Basic)