본문 바로가기
게임 개발 일지/내일배움캠프 TIL

[C#] 인터페이스와 추상클래스 / 스택과 큐의 차이

by 빛하_ 2024. 1. 26.

 

기술면접 대비하기 #5

 

제네릭과 object의 차이

object는 타입이고, 제네릭은 타입을 사용하기 위한 도구이다.

오브젝트는 모든 자료형의 최상위 클래스이기 때문에 특정 타입을 지정하지 않고도 처리를 유연하게 할 수 있다. (다형성 강화) 단, 데이터 이동 간에 반드시 형변환이 이루어지므로 오버헤드 발생. (박싱-언박싱이 꼭 일어난다)

제네릭의 경우 타입을 지정하기 때문에 다형성은 포기하지만 속도가 빨라진다.

(객체를 일일이 타입별로 생성하지 않아도 됨, 중복 코드 줄어듦) 

언박싱은 발생할지라도 박싱 과정은 생략할 수 있게 함. 메모리적 이점이 있다.

 

 

인터페이스와 추상클래스의 차이

(1) abstract class 

= 해당 클래스를 추상화해서 new로 생성할 수 없게 함.

추상 클래스 내부에 생성한 abstract 는 상속받은 모든 자식 클래스들이 같은 함수를 구현시키도록 강제하는 역할을 한다.

상속받은 자식클래스는 override를 사용해서 해당 abstract 메서드를 가져와 반드시 구현해야한다.

 

(2) interface

= 다른 언어들의 다중 상속에서 발생하는 책임 소재의 문제점을 해결하기 위해 등장.

C#에서 다형성을 구현하는 중요한 개념. 

동일한 메서드를 가지고 있어도 다르게 동작해야 하는 여러 객체를 관리할 때 인터페이스가 효율적이다. 

인터페이스는 클래스 형태를 갖지 않고 동작의 구현에 초점을 맞춘다.

클래스가 이런 인터페이스를 구현함으로써 특정 개체 간 일관된 동작을 보장하게 된다.

 

스택과 큐의 차이
 (1) 스택

후입선출 구조. 가장 마지막에 삽입된 자료가 가장 먼저 출력된다.

삽입과 삭제 작업이 같은 지점에서 이루어질 수 있다. 

정해진 방향으로만 쌓을 수 있으며, 삽입되고 삭제되는 접근 범위를 top이라고 한다. 

삽입 연산을 push, 삭제 연산을 pop이라고 한다. 

 

(2) 큐

선입선출 구조. 가장 먼저 삽입된 자료가 가장 먼저 출력된다.

따라서 삽입과 삭제 작업이 서로 다른 지점에서 이루어진다.

삭제연산만 수행하는 곳을 front, 삽입 연산을 수행하는 곳을 rear (리어) 라고 하며

프론트에서 일어나는 삭제연산을 dequeue, 리어에서 일어나는 삽입연산은 enqueue라고 한다.  

 

 

 

 

댓글