본문 바로가기
C#

상속 + 다형성, 집합

by imagineer_jinny 2021. 7. 18.

상속 :

베이스 클래스를 가져와서 그 위에 나만의 클래스를 확장해서 짓는 것.

따라서 코드 재활용 할 수 있고 구조 간결하게 할 수 있다.

 

다형성 :

상속에서 나오는 특징인데, 여러가지 베이스 클래스에서 파생된 여러 클래스들을 한번에 관리할 수 있음

 

 

상속과 다형성을 잘 활용하면 코드 구조를 간결하게 + 재활용 할 수 있음.

 

상속

 

Animal.cs

<부모 클래스 Animal>

 

<자식 클래스 : Dog >

 

<자식 클래스 : Cat >

 

Test.cs

 

 

부모-자식 관계에서 부모 클래스에서 private는 자식 클래스에서 보이지 않음!

부모 클래스의 GetSpeed는 public이라 자식에서 쓸 수 있으나

단, CalcSpeed()의 자세한 풀이 과정은 숨겼기 때문에(private) 자식에서 쓸 수 없음.

 

자식까진 public 보여주게 하고 싶으나, 쌩 외부의 클래스에서는 못보게 숨기고 싶음 

이럴 때 쓰는 것: protected

바깥에서는 안보임. 하지만 부모 입장에서(Animal) 자식은 보게 할 수 있음.

 

이런거 왜 나눠? 코드 깔끔하게 이해하기 쉽게 하기 위해. 굳이 보여주지 않아도 될 정보는 안보여주는것임

 

집합

동물이나 식물은 생명이라 부를 수 있지만 생명을 동물 혹은 식물이라고 바로 넘길 수 없음.

- 작은 집합에 있는 것들은 큰 집합으로 부를 수 있으나, 큰 집합이 곧 작은 집합과 일치한다고 볼 수 없음.

- 가장 큰 집합은 조건이 가장 간단하고 조건이 거의 없음

생명체는 숨을 쉰다라는 한가지 조건만 있으면 됨. 

그런데 동물은 숨을 쉰다 + 움직인다 라는 조건이 필요하고

식물은 숨을 쉰다 + 움직이지 않는다 라는 조건이 필요.

 

- 집합의 범위란 조건이 작으면 작을수록, 만드는 게 거의 없으면 없을수록 범위가 넓어짐

- 조건이 상세해지고 덧붙여질수록 범위가 좁아지고 

- 작은 집합에 있는 것들은 큰 집합으로 부를 수 있고, 큰 집합은 작은 집합이라고 부를 수 없음

 

착각할 수 있는 부분: 내부 구현물이 많아지고 조건이 덧붙여질수록 집합은 작아지고

Dog, Cat은 Animal이라고 부를 수 있지만

Animal이 곧 Dog, Cat이 될 수 없음

 

 

 

다형성

기본 형태에서 파생된 여러가지 물건들은 기본 형태로써 한방에 관리할 수 있다.

 

Cat과 Dog은 Animal로서의 기능은 다 가지고 있고 쓸 수 있음!

그래서 이친구들을 하나의 Animal 변수에 몰아넣고 공통되는 기능을 다 쓸 수 있음.

Animal로 다룬다고 해서 Cat과 Dog이 각각 고유 기능을 잃는게 아니라 

단지 Cat, Dog 정보는 가지고 있으나 가리킬 방법이 없는 것 뿐임.

 

MonoBehaviour : 유니티가 제공하는 Component, 부품으로써의 편의 기능이 들어있음

'C#' 카테고리의 다른 글

인터페이스  (0) 2021.07.19
오버라이드  (0) 2021.07.18
리스트(List)  (0) 2021.07.13
정적 변수 + 정적 함수  (0) 2021.07.13
오버로드  (0) 2021.07.13

댓글