Visual Basic의 액세스 수준
선언된 요소의 액세스 수준은 액세스하는 기능의 범위, 즉 코드에서 읽거나 쓸 수 있는 권한이 있는 수준입니다. 이는 요소 자체를 선언하는 방법뿐만 아니라 요소 컨테이너의 액세스 수준에 따라 결정됩니다. 포함하는 요소에 액세스할 수 없는 코드는 포함된 요소 중 하나인 Public
로 선언된 요소에도 액세스할 수 없습니다. 예를 들어 Private
구조체의 Public
변수는 구조체를 포함하는 클래스 내부에서 액세스할 수 있지만 해당 클래스 외부에서는 액세스할 수 없습니다.
공공 사업
선언문의 Public 키워드는 동일한 프로젝트의 모든 코드, 프로젝트를 참조하는 다른 프로젝트 및 프로젝트에서 빌드된 어셈블리에서 요소에 액세스할 수 있음을 지정합니다. 다음 코드는 샘플 Public
선언을 보여줍니다.
Public Class ClassForEverybody
모듈, 인터페이스, 네임스페이스 수준에서만 Public
을 사용할 수 있습니다. 즉, 소스 파일 또는 네임스페이스 수준에서 또는 인터페이스, 모듈, 클래스, 구조체 내에서 public 요소를 선언할 수 있지만 프로시저에서는 선언할 수 없습니다.
Protected
선언문의 Protected 키워드는 동일한 클래스 내에서만 또는 이 클래스에서 파생된 클래스에서만 요소에 액세스할 수 있도록 지정합니다. 다음 코드는 샘플 Protected
선언을 보여줍니다.
Protected Class ClassForMyHeirs
Protected
를 클래스 수준에서만 사용할 수 있으며 클래스의 멤버를 선언하는 경우에만 사용할 수 있습니다. 즉, 소스 파일 또는 네임스페이스 수준이나 인터페이스, 모듈, 구조체, 프로시저 내에서는 클래스에서 보호된 요소를 선언할 수 없습니다.
Friend
선언문의 Friend 키워드는 동일한 어셈블리 내에서는 액세스할 수 있지만 어셈블리 외부에서는 액세스할 수 없으므로 지정합니다. 다음 코드는 샘플 Friend
선언을 보여줍니다.
Friend stringForThisProject As String
모듈, 인터페이스, 네임스페이스 수준에서만 Friend
을 사용할 수 있습니다. 즉, 소스 파일 또는 네임스페이스 수준에서 또는 인터페이스, 모듈, 클래스, 구조체 내에서 friend 요소를 선언할 수 있지만 프로시저에서는 선언할 수 없습니다.
Protected Friend
선언문의 Protected Friend 키워드 조합은 파생 클래스 또는 동일한 어셈블리 내에서 또는 둘 다에서 요소에 액세스할 수 있음을 지정합니다. 다음 코드는 샘플 Protected Friend
선언을 보여줍니다.
Protected Friend stringForProjectAndHeirs As String
Protected Friend
는 클래스 수준에서만 사용할 수 있으며 클래스의 멤버를 선언하는 경우에만 사용할 수 있습니다. 즉, 클래스에서 protected friend 요소를 선언할 수 있지만 소스 파일 또는 네임스페이스 수준이나 인터페이스, 모듈, 구조체, 프로시저 내에서 선언할 수는 없습니다.
프라이빗
선언문의 Private 키워드는 동일한 모듈, 클래스, 구조체 내에서만 요소에 액세스할 수 있도록 지정합니다. 다음 코드는 샘플 Private
선언을 보여줍니다.
Private _numberForMeOnly As Integer
Private
는 모듈 수준에서만 사용할 수 있습니다. 즉, 모듈, 클래스, 구조체 내에서 프라이빗 요소를 선언할 수 있지만 소스 파일이나 네임스페이스 수준, 인터페이스 내부, 프로시저에서는 선언할 수 없습니다.
모듈 수준에서 액세스 수준 키워드가 없는 Dim
문은 Private
선언과 동일합니다. 그러나 코드를 더 쉽게 읽고 해석할 수 있도록 Private
키워드를 사용할 수 있습니다.
비공개 보호
선언문의 Private Protected 키워드 조합은 포함하는 클래스와 동일한 어셈블리에 있는 파생 클래스뿐만 아니라 동일한 클래스 내에서만 요소에 액세스할 수 있도록 지정합니다. Private Protected
액세스 한정자는 Visual Basic 15.5부터 지원됩니다.
다음 예제에서는 Private Protected
선언을 보여 줍니다.
Private Protected internalValue As Integer
클래스 내에서만 Private Protected
요소를 선언할 수 있습니다. 인터페이스 또는 구조체 내에서 선언할 수 없으며 소스 파일 또는 네임스페이스 수준, 인터페이스, 구조체 내부 또는 프로시저에서 선언할 수도 없습니다.
Private Protected
액세스 한정자는 Visual Basic 15.5 이상에서 지원됩니다. 이를 사용하려면 Visual Basic 프로젝트(*.vbproj) 파일에 다음 요소를 추가합니다. Visual Basic 15.5 이상이 시스템에 설치되어 있는 한 최신 버전의 Visual Basic 컴파일러에서 지원하는 모든 언어 기능을 활용할 수 있습니다.
<PropertyGroup>
<LangVersion>latest</LangVersion>
</PropertyGroup>
Private Protected
액세스 한정자를 사용하려면 Visual Basic 프로젝트(*.vbproj) 파일에 다음 요소를 추가해야 합니다.
<PropertyGroup>
<LangVersion>15.5</LangVersion>
</PropertyGroup>
자세한 내용은 Visual Basic 언어 버전 설정을 참조하세요.
액세스 한정자
액세스 수준을 지정하는 키워드를 액세스 한정자라고 합니다. 다음 표에서는 액세스 한정자를 비교합니다.
액세스 한정자 | 부여된 액세스 수준 | 이 액세스 수준으로 선언할 수 있는 요소 | 이 한정자를 사용할 수 있는 선언 컨텍스트 |
---|---|---|---|
Public |
제한 없음: public 요소를 볼 수 있는 모든 코드는 해당 요소에 액세스할 수 있습니다. |
인터페이스 모듈 클래스 구조 구조체 멤버 절차 속성 멤버 변수 상수 열거형 이벤트 외부 선언 대리자 |
원본 파일 네임스페이스 인터페이스 모듈 클래스 구조체 |
Protected |
파생: 보호된 요소 또는 해당 요소에서 파생된 클래스를 선언하는 클래스의 코드는 요소에 액세스할 수 있습니다. |
인터페이스 클래스 구조 절차 속성 멤버 변수 상수 열거형 이벤트 외부 선언 대리자 |
클래스 |
Friend |
어셈블리: 어셈블리에서 friend 요소가 액세스할 수 있다고 선언하는 코드 |
인터페이스 모듈 클래스 구조 구조체 멤버 절차 속성 멤버 변수 상수 열거형 이벤트 외부 선언 대리자 |
원본 파일 네임스페이스 인터페이스 모듈 클래스 구조체 |
Protected Friend |
Protected 과 Friend 통합:protected friend 요소와 동일한 클래스나 동일한 어셈블리의 코드 또는 요소의 클래스에서 파생된 클래스 내의 코드는 해당 클래스에 액세스할 수 있습니다. |
인터페이스 클래스 구조 절차 속성 멤버 변수 상수 열거형 이벤트 외부 선언 대리자 |
클래스 |
Private |
선언 컨텍스트: 포함된 형식 내의 코드를 포함하여 private 요소를 선언하는 형식의 코드는 요소에 액세스할 수 있습니다. |
인터페이스 클래스 구조 구조체 멤버 절차 속성 멤버 변수 상수 열거형 이벤트 외부 선언 대리자 |
모듈 클래스 구조체 |
Private Protected |
private protected 요소를 선언하는 클래스의 코드 또는 기본 클래스와 동일한 어셈블리에 있는 파생 클래스의 코드입니다. | 인터페이스 클래스 구조 절차 속성 멤버 변수 상수 열거형 이벤트 외부 선언 대리자 |
클래스 |
참고 항목
.NET