캡슐화(Encapsulation)
데이터를 캡슐화 한 것. 어떤 객체를 설명하기 위핸 필드와 메서드를 안데 모아 정의하고 외부에 공개할 멤버와 공개하지 않을 멤버를 구분한다. 객체의 속성, 행위를 각각 하나로 묶어 정의하면 구분과 유지보수하기 쉽다.
접근 제한자(Access modifier)
캡슐화를 이용해 어떻게 정보를 은닉하는지를 결정하는 키워드. 클래스 외부에 클래스 멤버를 공개할 것인지 공개하지 않을 것인지를 결정하는 키워드.
접근 제한자
|
설명
|
public
|
모든 외부에서 접근 가능 (외부 어셈블리, 외부 클래스, 파생 클래스, 클래스 내부)
|
internal
|
같은 어셈블리 내에서만 접근 가능 (외부 클래스, 파생 클래스, 클래스 내부)
|
protected
|
파생 클래스만 접근 가능 (파생 클래스, 클래스 내부)
|
private
|
외부에 공개하지 않음 (클래스 내부)
|
외부 프로젝트에서 접근하지 않는 이상 public과 intermal은 같은 의미라고 할 수 있다.
public 키워드
class 키워드 앞에 public 키워드가 등장하는 방식.
public 키워드가 붙은 클래스는 프로젝트 내의 다른 스크립트에서도 접근할 수 있다.
해당 클래스 외부에 공개하는 역할.
inspector 창에 접근하여 수정할 수 있다.
public 키워드가 붙어도 접근하기 위해서는 부모클래스가 되어야 한다.
private 키워드
public과는 반대로 외부에 해당 요소를 공개하지 않는 것을 말한다.
기본적으로 클래스 내 변수와 함수는 기본적으로 캡슐화에 의해 보호된 상태(private)상태다.
해당 클래스를 같은 프로젝트 내 다른 스크립트에서 접근할 수 없게 한다.
외부에 숨겨야 하는 민감한 데이터에 사용한다.
inspector 창에서 볼 수 없다.
만약 여기에 있는 클래스를 다른 스크립트에서 불러오려고 한다면 아래와 같은 에러가 뜬다.
['클래스 이름' is inaccessible due to its protection level]
protected 키워드
public은 클래스 외부에서도 해당 멤버로의 접근을 허용하고 private은 클래스 내부에서만 해당 멤버로 접근을 허용한다. protected는 외부에서 접근은 불가능 하지만 파생 클래스에만 접근을 허용하여 상속관계에서 사용이 가능하다. private에서 파생 클래스로부터의 접근을 허용하는 역할이 추가된 것이다.
접근 제한자(접근 수식자)의 생략
클래스와 멤버를 정의할 때 제한자를 생략할 수 있는데, 이 경우 클래스와 멤버는 다르게 동작한다.
멤버는 private 으로 접근 제한자가 설정되고 생략되고 클래스는 internal로 설정되어 해당 프로젝트 내 다른 스크립트에서 모두 접근할 수 있다
'유니티 C# > C#' 카테고리의 다른 글
C#기초 - static 메서드 뜻 (0) | 2023.05.11 |
---|---|
C#기초 - this 키워드 뜻 (0) | 2023.05.11 |
C#기초 - 메서드(Method)란? (인수, 반환값, void 뜻) (0) | 2023.05.02 |
C#기초 - 배열 사용법 (0) | 2023.05.02 |
C#기초 - 반복문 for문 사용법 (0) | 2023.04.28 |
댓글