Deff_Dev
[C#] 객체 지향 프로그래밍 본문
1. SOLID 원칙에 대해 설명해주세요.
- 단일 책임의 원칙 (SRP)
- 하나의 클래스는 하나의 목적을 위해 생성한다.
- ⇒ 하나의 클래스는 하나의 기능만 담당해야 된다는 얘기
- 개방 폐쇄의 원칙 (OCP)
- 확장에는 열려있고, 수정에는 닫혀있어야 한다.
- ⇒ 기능이 추가될 때, 원래 존재하는 클래스는 수정하지말고 새로운 클래스를 추가해야 된다는 얘기
- 리스코프 치환의 법칙 (LSP)
- 서브 타입(상속받은 하위 클래스)은 어디서나 자신의 기반 타입(상위 클래스)으로 교체할 수 있어야 한다..
- ⇒ 자식 클래스는 부모 클래스의 기능을 확장하되, 부모 클래스가 제공하는 모든 기능을 동일하게 제공하고 일관성을 유지하라는 말
- 인터페이스 분리의 원칙 (ISP)
- 클라이언트가 사용하지 않는 인터페이스 때문에 영향을 받아서는 안된다.
- ⇒ 인터페이스에 하나의 기능만 넣어어야 된다는 얘기
- 의존성 역전의 법칙 (DIP)
- 실제 사용 관계는 바뀌지 않으며, 추상을 매개로 메시지를 주고받음으로써 관계를 최대한 느슨하게 만든다.
- ⇒ 클래스를 직접 참조해 구현하지말고 상위 요소를 참조하라는 말
2. 객체지향 프로그래밍의 속성 중 하나인 다형성과 이를 활용한 설계의 장점에 대해 설명해주세요.
- 다형성이란 객체가 여러가지 다양한 형태를 가지는 것을 뜻한다.
- 상속을 받은 자식 클래스가 다양한 형태를 가질 수 있어 유연하고 확장 가능한 코드를 작성할 수 있다. ex) 업 캐스팅, 다운 캐스팅
3. override와 overload에 대해 설명해주세요.
overide : 상위 클래스에 정의된 메소드를 하 클래스에서 재정의하는 것을 의미한다.
overload : 같은 이름의 메소드를 매개변수만 다르게 정의하는 것을 의미한다.
4. 확장 메서드에 대해 설명하고 어떻게 활용했는지 알려주세요.
- 확장 메소드는 기존 클래스 기능을 확장하는 기법으로, 다른 클래스에 인스턴스 메소드를 추가할 수 있다.
- 클래스 자체의 내용을 수정할 수 없고, 외부에서 그 클래스에 기능을 추가하고 싶을 사용한다.
'면접 질문 정리 > C#' 카테고리의 다른 글
[C#] 가비지 컬렉터 (Garbage Collectior) (0) | 2024.07.08 |
---|---|
[C#] 상속과 인터페이스 (0) | 2024.07.05 |
[C#] 스택 메모리, 힙 메모리 (0) | 2024.07.04 |
[C#] 콜백, delegate, event (0) | 2024.07.03 |
[C#] 객체와 한정자 (0) | 2024.07.01 |