[디딤돌 C++] 34. 추상 클래스(ABSTRACT CLASS)

학생) 순수 가상 메서드는 기능을 구현하지 않고 약속만 하는 메서드입니다. virtual void Play()=0; 그리고 순수 가상 메서드를 갖는 형식은 추상 클래스입니다.

이번에는 추상(Abstract) 클래스를 살펴볼게요.

추상 클래스는 다른 형식의 기반 클래스로만 사용할 수 있고 개체를 생성할 수 없는 클래스를 말합니다. 이에 대응하는 개념으로 개체를 생성할 수 있는 클래스를 구상 클래스입니다. .C++언어에서는 멤버 메서드 중에 순수 가상 메서드를 하나라도 갖고 있는 클래스는 추상 클래스입니다.

순수 가상 메서드는 virtual 키워드로 메서드를 선언하고 메서드 내부를 정의하지 않겠다는 =0;를 표시한 메서드를 말합니다. 그리고 순수 가상 메서드는 다른 OOP 언어에서 추상 메서드와 같은 의미입니다.

다음은 순수 가상 메서드를 갖고 있는 음악가 클래스의 개체를 생성하려고 할 때 나오는 오류 화면입니다.

추상 클래스를 인스턴스화할 수 없습니다.

그리고 기반 형식에 순수 가상 메서드가 있을 때 파생 형식에서 이를 재정의하지 않으면 파생 형식도 추상 클래스입니다. 따라서 파생 형식을 구상 클래스로 만들기 위해서는 반드시 기반 형식에 순수 가상 메서드를 재정의하여야 합니다.

다음은 기반 형식이 추상 클래스일 때 파생 형식에서 재정의하지 않고 개체를 생성하려고 할 때 나오는 오류 화면입니다.

추상 클래스를 인스턴스화할 수 없습니다.

추상 클래스를 이용하면 파생 형식에 공통으로 제공해야 하는 기능이 있지만 실제 구현에서 공통적인 알고리즘이 없을 때 순수 가상 메서드로 기능을 약속할 수 있습니다.

다음은 음악가의 “연주하다.”기능을 순수 가상 메서드로 선언하고 파생 클래스에서 재정의하는 예제 코드입니다.

▷ 실행 결과

피아노맨1 음악가: 안녕

피아노맨1 연주하다.

딩동댕 ♩♪♬

두둥맨1 음악가: 안녕

두둥맨1 연주하다.

두두둥~~~

피아노맨2 음악가: 안녕

피아노맨2 연주하다.

딩동댕 ♩♪♬

두둥맨2 음악가: 안녕

두둥맨2 연주하다.

두두둥~~~


[C++ 무료 동영상 강의] 34. 추상 클래스(Abstract Class)