3 - 2학기/객체 지향 프로그래밍

객체 지향 프로그래밍 : 가상함수와 추상 클래스

harvartz의 일지 2021. 6. 13. 15:24

1. 클래스 형 변환 규칙

2. 가상 함수

3. 추상 클래스와 인터페이스 상속

 

클래스 형 변환이란 어떤 개념인가?

상속 관계에 놓은 클래스 간에만 가능하다.

파생 클래스에서 기본 클래스쪽으로 형 변환만 가능하다

is-a 관계가 성립하는 방향으로만 일어난다.

 

클래스 형 변환 규칙

파생 클래스의 객체는 기본 클래스의 객체로 형 변환 가능

파생 클래스의 포인터는 기본 클래스의 포인터로 형 변환 가능

파생 클래스의 레퍼런스는 기본 클래스의 레퍼런스로 형 변환 가능

 

파생 클래스의 기본 클래스로 형 변환 경우

1. is - a 관계가 성립하는 쪽으로의 형 변환

2. 파생 클래스 포인터를 기본 클래스 포인터로 형 변환

3. 

 

 

가상 함수

기본 클래스 포인터로 호출하더라도 파생 클래스에 재정의된 함수를 호출하도록 만들려면?

-> 기본 클래스의 멤버 함수를 가상 함수로 선언

 

3. 추상 클래스와 인터페이스 상속

 

순수 가상함수

- 파생 클래스에서 재정의할 함수를 알려주는 역할

- 실행할 코드를 작성할 목적이 아님

 

- 파생 클래스에서 재정의될 함수에 대해서 미리 원형이 필요하기는 하지만 기본 클래스에서는 아직 구현할 필요가 없을 때 사용

- 순수 가상 함수는 파생 클래스에서 재정의하도록 원형만 미리 준비하는 것이라는 의미, 파생 클래스는 상속 받은 순수 가상 함수를 반드시 재정의해야 한다.

 

추상 클래스란?

최소한 하나의 순수 가상 함수를 갖는 클래스

- 객체를 생성할 수 없다.

- 포인터 변수나 레퍼런스 변수는 정의할 수 있다.

(파생 클래스 객체를 가리키는 용도, 파생 클래스 객체에 접근하는 인터페이스 역할을 제공)