추상 클래스: 자식에게 자기가 가지고 있는 멤버나 함수를 상속시켜주지만 동시에 자기자신은 껍데기같은 것이라서 인스턴스화가 안됨(실시간으로 생성이 안됨)
- 일반적인 클래스와 인터페이스의 중간정도 역할
- 인터페이스와 유사한데 인터페이스와 다른 점이라면
인터페이스는 맴버변수를 가질 수 없음(값을 가질 수 없음)
반면 추상클래스는 내부 값은 가질 수 있지만 찍어낼 수 없도록 강제됨.
인터페이스의 한계: 순수하게 함수 껍데기 자체만 들어갈 수 없고 멤버 변수나 구현물이 들어가있는 함수가 못들어감.
원하는 것: 어느정도 구현물이 들어가있었으면 좋겠다.
추상 클래스 만들기
클래스 앞에다 abstract 붙이기
추상 클래스는 함수 앞에다 abstract를 붙일 수 있음
인터페이스와 달리 실제 구현물도 어느정도 표현할 수 있음
그러나 껍데기인 부분(Attack)과 껍데기 아닌 부분이 섞여있어서 게임 도중에 실시간으로 안찍힘
BaseMonster은 Attack이란 친구를 자식들이 강제로 덮어쓰기 해서 작성하도록 하고 있음.
동시에 Update 함수에서 자식들이 굳이 Attack을 발동시키는 방법을 구현 할 필요 없이 스페이스바를 누르면 Attack이
구현되도록 해둠
즉, 필요한 부분만 자식들이 직접 오버라이드 해서 만들도록 하고 그게 어떻게 동작하는지는 BaseMonster가 알아서 취급
정리:
추상 클래스는 인터페이스처럼 일종의 서식과 껍데기를 제공하는데
인터페이스와 다른 점이 있다면 내부 구현물을 가질 수 있다는 것.
하지만 밑의 그림처럼 하이라키창으로 가져와서 뭘 만들려하면
빈 껍데기기 때문에 만들어지지 않음.
댓글