• 회원가입
  • 로그인
  • 구글아이디로 로그인

[class] C# - Access Modifiers (접근 수정자)

1,894  
목차
  1. Access Modifiers (접근 수정자)
  2. Private 수정자
  3. Public 수정자
  4. 접근 수정자 사용 이유

 

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 상태.

}

 



분류 제목
class C# - OOP (객체 지향 프로그래밍)
class C# - Class (클래스) / Object (객체)
class C# - Class Members (클래스 멤버) - 속성(=필드), 메서드
class C# - Constructors (생성자)
class C# - Access Modifiers (접근 수정자)
class C# - Encapsulation (캡슐화) ※ Getter (게터) / Setter (세터)
class C# - Inheritance (상속)
class C# - Polymorphism (다형성)
class C# - Abstraction (추상화)
class C# - interface (인터페이스) ★
class C# - enums (이넘) - 상수 열거형 클래스
class C# - Files (파일) - 파일생성/파일읽기/파일쓰기
class C# - Exceptions (= Try...Catch..) - 에러 제어
목록
찾아주셔서 감사합니다. Since 2012