접근 제한자 (Access Modifier)
c#의 접근 제한자 (엑세스 한정자)는 크게 4가지로 이루어져 있다.
public : 어디서든 접근 가능
private : 해당 클래스 내부에서만 접근 가능
internal : 같은 어셈블리 내에서만 접근 가능
protected : 파생 클래스 상속받은 클래스에서 접근 가능
많이 사용하는건 public
과 private
이다.
class의 접근 제한자 기본값은 internal이며
class내의 필드나 메서드의 접근 제한자 기본값은 private이다.
access_modifier 네임스페이스
using access_modifier2;
using System;
namespace access_modifier
{
// 기본값은 internal 따라서 같은 어셈블리 (프로젝트)에서는 사용이 가능하다.
class Sample
{
// 기본값은 private
int a;
public int b;
protected int c;
public void Print()
{
Console.WriteLine("Hello");
}
// 메서드 역시 기본값은 private
void Print2()
{
Console.WriteLine("Hello2");
}
}
// Sample2 클래스는 Sample 클래스를 상속받음
class Sample2 : Sample
{
int d;
void Print3()
{
// 따라서 protecd 접근 가능
Console.WriteLine("Hello3" + c);
}
}
class Program
{
static void Main(string[] args)
{
// class는 internal이기 때문에 인스턴스화 가능
Sample sample = new Sample();
// private 접근 불가
sample.a = 1;
// public 접근 가능
sample.b = 2;
// proteced 접근 불가
sample.c = 3;
sample.Print();
// private 접근 불가
sample.Print2();
// 하지만 다른 어셈블리이기 때문에 사용이 불가능하다.
internal_test it = new internal_test();
// public class는 접근이 가능 하지만 사용하기 위해서는
// using문을 추가 해주어야 한다.
public_test pt = new public_test();
}
}
}
access_modifier2 네임스페이스 (다른 어셈블리)
namespace access_modifier2
{
internal class internal_test
{
int a;
int b;
int c;
}
public class public_test
{
int a;
int b;
int c;
}
}
'C# > Basic' 카테고리의 다른 글
제네릭 (Generic) 1 (0) | 2021.02.28 |
---|---|
상속 (inheritance) (0) | 2021.02.25 |
this (0) | 2021.02.13 |
getters & setters (0) | 2021.02.07 |
구조체 (struct) (0) | 2021.02.06 |
댓글
이 글 공유하기
다른 글
-
제네릭 (Generic) 1
제네릭 (Generic) 1
2021.02.28 -
상속 (inheritance)
상속 (inheritance)
2021.02.25 -
this
this
2021.02.13 -
getters & setters
getters & setters
2021.02.07