---
# System prepended metadata

title: 아래 여러 상황에서 각각의 상황에 맞는 방법을 클래스의 상속과 프로토콜 기본 구현 중 골라서 직접 코드로 구현해보세요.

---

# 아래 여러 상황에서 각각의 상황에 맞는 방법을 클래스의 상속과 프로토콜 기본 구현 중 골라서 직접 코드로 구현해보세요.




## 상황 1 : 야곰 아카데미 구성원 각각의 역할을 표현하고 싶을 때 (ex : 캠퍼, 크루, 리더, 매니저, 서포터, 리뷰어 등)



## 상황 2 : 각종 도형(삼각형, 사각형, 정사각형, 직사각형, 평행사변형 등등)을 타입으로 표현하고 싶을 때



## 상황 3 : 탈것(자동차, 승용차, 버스, 트럭, 기차, 보트, 비행기, 오토바이, 자전거, 퀵보드 등등)을 표현하고 싶을 때



## 상황 4 : 포켓몬(피카츄, 라이츄, 파이리, 꼬부기, 또가스, 또도가스, 잉어킹, 갸라도스 등등)을 표현하고 싶을 때
~~~swift
    protocol 전기포켓몬
    protocol 불포켓몬
    protocol 물포켓몬
    protocol 독포켓몬

    struct 피카츄: 전기포켓몬
    struct 라이츄: 전기포켓몬
    struct 파이리: 불포켓몬
    struct 꼬부기: 물포켓몬
    struct 또가스: 독포켓몬
    struct 또도가스: 독포켓몬
    struct 잉어킹: 물포켓몬
    struct 갸라도스: 물포켓몬
~~~
![](https://i.imgur.com/8AfaUww.png)


4개 중 3개 선택하여 진행

각각의 상황에서 해당 방식을 택한 이유는 무엇인가요?

## 상황1: 프로토콜
디스코드내 유저에 역할이 달려있듯이 프로토콜로 역할을 달아주기 위함이었다.

근데 상속으로 해도 됐을듯

## 상황2: 상속
엄...

각 방식의 한계점에는 무엇무엇이 있을까요?


실제로는 정사각형이 직사각형이 될 수 있지만
상속의 개념으로는 정사각형은 직사각형이 될 수 없다

정사각형은 직사각형이 될 수 있다.
직사각형은 정사각형이 될 수 없다.

하지만 저 개념으로 한다면 
상속으로는 직사각형의 확장으로 정사각형을 해야하기 때문에
(정사각형은 직사각형이 될 수 있다.)


정사각형: 직사각형 -> X
직사각형: 정사각형 -> O

## 상황1: 프로토콜


## 상황2: 상속

하나만 상속 가능함. 다중상속이 안됨
구조체 같은 값 타입에서는 사용 불가.


클래스의 상속과 프로토콜 기본구현이 모두 가능한 상황이라고 가정한다면, 둘 중 하나의 방법으로 선택에 있어 고민해봐야 하는 지점은 
무엇이 있을까요?

둘 다 가능한 상황이면 성능상의 이점이 있는 프로토콜 기본구현을 사용.

- 뭘 고민해야되지?

뭐든 고민해야지 ㄹㅇㅋㅋ



75분 활동, 16:15에 만나요!