다음을 통해 공유


Visual Basic의 액세스 수준

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

공개

선언문의 Public 키워드는 동일한 프로젝트의 모든 코드, 프로젝트를 참조하는 다른 프로젝트 및 프로젝트에서 빌드된 어셈블리에서 요소에 액세스할 수 있음을 지정합니다. 다음 코드는 샘플 Public 선언을 보여줍니다.

Public Class ClassForEverybody

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

보호됨

선언문의 Protected 키워드는 동일한 클래스 내에서만 또는 이 클래스에서 파생된 클래스에서만 요소에 액세스할 수 있도록 지정합니다. 다음 코드는 샘플 Protected 선언을 보여줍니다.

Protected Class ClassForMyHeirs

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

친구

선언문의 Friend 키워드는 해당 요소가 동일한 어셈블리 내부에서는 접근할 수 있지만 외부에서는 접근할 수 없음을 지정합니다. 다음 코드는 샘플 Friend 선언을 보여줍니다.

Friend stringForThisProject As String

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

보호된 친구

선언문의 Protected Friend 키워드 조합은 파생 클래스 또는 동일한 어셈블리 내에서 또는 둘 다에서 요소에 액세스할 수 있음을 지정합니다. 다음 코드는 샘플 Protected Friend 선언을 보여줍니다.

Protected Friend stringForProjectAndHeirs As String

클래스 수준에서만 사용할 수 있으며 클래스의 멤버를 선언하는 경우에만 사용할 Protected Friend 수 있습니다. 즉, 클래스에서 보호된 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 무제한:

공용 요소를 볼 수 있는 모든 코드는 해당 요소에 액세스할 수 있습니다.
인터페이스

모듈

수업

구조

구조체 멤버

절차

속성

멤버 변수

상수

열거 목록

이벤트

외부 선언

대표자
원본 파일

네임스페이스

인터페이스

모듈

클래스

구조
Protected 파생:

보호된 요소 또는 해당 요소에서 파생된 클래스를 선언하는 클래스의 코드는 요소에 액세스할 수 있습니다.
인터페이스

수업

구조

절차

속성

멤버 변수

상수

열거 목록

이벤트

외부 선언

대표자
클래스
Friend 집회:

friend 요소를 선언하는 어셈블리의 코드가 액세스할 수 있습니다.
인터페이스

모듈

수업

구조

구조체 멤버

절차

속성

멤버 변수

상수

열거 목록

이벤트

외부 선언

대표자
원본 파일

네임스페이스

인터페이스

모듈

클래스

구조
Protected Friend ProtectedFriend의 통합

보호된 friend 요소와 동일한 클래스 또는 동일한 어셈블리의 코드 또는 요소의 클래스에서 파생된 클래스 내에서 해당 클래스에 액세스할 수 있습니다.
인터페이스

수업

구조

절차

속성

멤버 변수

상수

열거 목록

이벤트

외부 선언

대표자
클래스
Private 선언 컨텍스트:

포함된 형식 내의 코드를 포함하여 private 요소를 선언하는 형식의 코드는 요소에 액세스할 수 있습니다.
인터페이스

수업

구조

구조체 멤버

절차

속성

멤버 변수

상수

열거 목록

이벤트

외부 선언

대표자
모듈

클래스

구조
Private Protected 프라이빗 보호된 요소를 선언하는 클래스의 코드 또는 bas 클래스와 동일한 어셈블리에 있는 파생 클래스의 코드입니다. 인터페이스

수업

구조

절차

속성

멤버 변수

상수

열거 목록

이벤트

외부 선언

대표자
클래스

참고하십시오