오늘 배운 내용
-
접근제한자란 무엇인가?
-
struct와 class를 비교하여 설명해 주세요.
기술 면접 예상 질문 - 접근제한자란 무엇인가?
접근 제한자란 객체 지향 프로그래밍 언어에서 캡슐화, 정보 은닉을 위해서 제공되는 기능
-
정보 은닉 : 객체의 내부 구조와 기능의 구현을 숨겨 외부에서 객체를 직접 수정하거나 접근하는 것을 방지합니다.
-
캡슐화 : 객체의 데이터와 데이터를 조작하는 메서드들을 하나의 클래스에서 관리하고 사용하기 위한 인터페이스 (메서드)만을 외부에 노출 시킨다.
캡슐화는 정보 은닉을 실현하는 방법중 하나
클래스, 변수, 메서드 앞에 위치하며 해당 인스턴스가 어디에서 접근이 가능한지를 정한다.
C#에서의 접근 제한자
- private : 클래스 내부에서만 접근 가능
- internal : 동일한 어셈블리 내에서 접근 가능
- public : 어디서든 접근 가능
- protected : 클래스 내부, 자식 클래스에서 접근 가능하다.
- protected internal : 어셈블리 외부에서는 protected, 내부에서는 internal처럼 동작
여기서 어셈블리란? 하나로 컴파일된 실행 파일이나 라이브러리 (exe, dll) 같은 것들을 말한다.
클래스의 접근제한자
private와 protected는 클래스 단위의 접근을 제한하기 때문에 중첩 클래스가 아닌 클래스는
public과 internal 접근 제한자만 가질 수 있다.
중첩 클래스 : 클래스 내부에 클래스를 선언하는 형태
Summary
접근제한자는 객체지향 프로그래밍 언어에서 클래스, 변수, 메서드 등의 멤버를 어디서 접근할 수 있는지 지정해 주는 키워드 입니다.
접근제한자를 사용해서 어떤 외부에서 멤버에 접근하고 수정하는 것을 제한할 수 있습니다.
기술 면접 예상 질문 - struct와 class를 비교하여 설명해 주세요.
struct
- struct는 값 타입으로 메모리의 스택 영역에 저장된다.
- 상속을 사용할 수 없고 인터페이스는 구현 가능하다.
- 값 타입 이기 때문에 null값을 가질 수 없다. (컴파일 에러 발생, 하지만 nullable struct는 가능)
- 빠른 접근 시간(스택영역), 데이터의 크기가 작을 때 사용 된다 (값 복사가 일어나기 떄문에 크기가 크면 불리하다)
class
- class는 참조 타입으로 메모리의 힙 영역에 저장된다.
- 상속이 가능하며, 추상클래스, 인터페이스 구현이 가능하다.
- 참조 타입 이기 떄문에 null이 할당될 수 있다.
- 더 복잡한 동작을 요구할 때 사용된다.
Summary
struct와 class의 가장 큰 차이는 struct는 값 타입 이므로 메모리의 스택영역에 저장되고
class는 참조 타입이므로 메모리의 힙 영역에 저장된다는 점 입니다.
struct는 스택 영역에서 데이터를 관리하기 떄문에 빠른 접근 시간을 요구하거나 데이터의 크기가 작을 때 유리하고 class는 더 복잡한 작업에서 유리합니다.