목차
Access Modifiers (접근 수정자)
Private 수정자
Public 수정자
접근 수정자 사용 이유
Access Modifiers (접근 수정자)
[개념]
1.
앞서 많이 봐온, public 키워드 같은 걸 말함.
(예) public string host;
2.
'클래스, 속성, 메서드'등에 대한 '접근 수준 / 가시성' 결정 에 사용.
[종류]
public
모든 클래스에서 코드에 접근 가능.
private
같은 클래스 내에서만 코드에 접근 가능. (기본값)
protected
같은 클래스 또는 그 상속된 클래스 내에서만 코드에 접근 가능.
internal
자체 어셈블리 내에서만 코드에 접근 가능.
PS1.
그외, 아래 2개 조합 있음.
protected internal
private protected
PS2.
private, public 수정자에 위주로 설명 예정.
Private 수정자
같은 클래스 내에서만 코드에 접근 가능.
[예제] 같은 클래스에서 접근 시도 시, 접근 가능.
using System;
namespace Homzzang
{
class Hz
{
private string host = "Homzzang.com";
static void Main(string[] args)
{
Hz my = new Hz();
Console.WriteLine(my.host);
}
}
}
결과값: Homzzang.com
[예제] 다른 클래스에서 접근 시도 시, 접근 실패.
1. Hz.cs
using System;
namespace Homzzang
{
class Hz
{
private string host = "Homzzang.com";
}
}
2. Index.cs
using System;
namespace Homzzang
{
class Index
{
static void Main(string[] args)
{
Hz my = new Hz();
Console.WriteLine(my.host);
}
}
}
결과값: 에러 발생.
'Hz.host' is inaccessible due to its protection level
The field 'Hz.host' is assigned but its value is never used
Public 수정자
모든 클래스에서 코드에 접근 가능.
[예제] 어디서든 접근 가능.
1. Hz.cs
using System;
namespace Homzzang
{
class Hz
{
public string host = "Homzzang.com";
}
}
2. Index.cs
using System;
namespace Homzzang
{
class Index
{
static void Main(string[] args)
{
Hz my = new Hz();
Console.WriteLine(my.host);
}
}
}
결과값: Homzzang.com
접근 수정자 사용 이유
1.
클래스 멤버의 가시성 제어해,
각 개별 클래스 및 클래스 멤버의 「보안 = 접근 수준 」결정.
2.
private 수정자로 선언 시, 「캡슐화 」에 도움.
※ 캡슐화 : "민감한" 데이터를 사용자에게 비노출.
PS.
접근 수정자 미지정 시, 클래스의 모든 멤버는 기본적으로 private 임.
class Hz
{
string host; // private 상태.
int open; // private 상태.
}
주소 복사
랜덤 이동
최신댓글