본문 바로가기
C#

추상 클래스

by imagineer_jinny 2021. 7. 19.

추상 클래스: 자식에게 자기가 가지고 있는 멤버나 함수를 상속시켜주지만 동시에 자기자신은 껍데기같은 것이라서 인스턴스화가 안됨(실시간으로 생성이 안됨)

 

- 일반적인 클래스와 인터페이스의 중간정도 역할

- 인터페이스와 유사한데 인터페이스와 다른 점이라면 

인터페이스는 맴버변수를 가질 수 없음(값을 가질 수 없음)

반면 추상클래스는 내부 값은 가질 수 있지만 찍어낼 수 없도록 강제됨.

 

인터페이스의 한계: 순수하게 함수 껍데기 자체만 들어갈 수 없고 멤버 변수나 구현물이 들어가있는 함수가 못들어감.

원하는 것: 어느정도 구현물이 들어가있었으면 좋겠다. 

 

추상 클래스 만들기

클래스 앞에다 abstract 붙이기

추상 클래스는 함수 앞에다 abstract를 붙일 수 있음

인터페이스와 달리 실제 구현물도 어느정도 표현할 수 있음

그러나 껍데기인 부분(Attack)과 껍데기 아닌 부분이 섞여있어서 게임 도중에 실시간으로 안찍힘

BaseMonster은 Attack이란 친구를 자식들이 강제로 덮어쓰기 해서 작성하도록 하고 있음.

동시에 Update 함수에서 자식들이 굳이 Attack을 발동시키는 방법을 구현 할 필요 없이 스페이스바를 누르면 Attack이

구현되도록 해둠

즉, 필요한 부분만 자식들이 직접 오버라이드 해서 만들도록 하고 그게 어떻게 동작하는지는 BaseMonster가 알아서 취급

 

정리:

추상 클래스는 인터페이스처럼 일종의 서식과 껍데기를 제공하는데 

인터페이스와 다른 점이 있다면 내부 구현물을 가질 수 있다는 것. 

하지만 밑의 그림처럼 하이라키창으로 가져와서 뭘 만들려하면

빈 껍데기기 때문에 만들어지지 않음.

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

유니티 이벤트  (0) 2021.07.20
프로퍼티  (0) 2021.07.19
인터페이스  (0) 2021.07.19
오버라이드  (0) 2021.07.18
상속 + 다형성, 집합  (0) 2021.07.18

댓글