[C++] Abstract / Interface

2024. 4. 18. 09:59언어 및 엔진/C++

Abstract와 Interface

Abstract : 추상. 구현이 되지 않은. 미완성
클래스의 이름 뒤 혹은 멤버 변수 앞에 붙게 됨


Abstract Class : 추상 클래스 : 순수 가상 함수가 하나 이상 있는 클래스
객체를 생성할 수 없음, 포인터는 만들 수 있음
내용이 없기 때문에 자식 클래스가 반드시 내용을 만들어 줘야 한다.(뼈대만 만듦)


Pure Virtual Function : 순수 가상 함수
추상클래스를 상속 받는 클래스도 추상 클래스가 된다.
상속 받은 모든 순수 가상함수는 오버라이딩(재정의)하면 객체를 생성할 수 있음
그냥 가상함수(Virtual Function)는 자식클래스가 오버라이딩(재정의)할 의무가 없다 -> 다형성(미리 토대를 만들어 둠) 없음
클래스이고, 클래스와 관련이 있고(주로 베이스 클래스로 사용), 한 개의 클래스에 여러개 사용 가능, 상속을 받아 확장시키는게 목적


Interface : 모든 멤버 함수가 순수 가상 함수인 클래스. 뼈대
기본 인터페이스에서 상속 가능, 기본 클래스에서 상속 불가, 공용 순수 가상 메서드만 포함 가능, 생성, 소멸자, 연산자 사용 불가, 정적 메서드 사용 불가, 데이터 멤버 포함 불가, 속성은 허용
기본적으로 public송성을 가짐. 순수 가상 함수로 선언 됨
Interface에 순수 가상 함수를 구성, 추상클래스가 상속 받고, 추상클래스가 기본 기능 구현, 추상클래스를 기본 클래스가 상속 받고 순수가상함수를 오버라이딩
객체 지향에 맞게 잘 정돈된 설계를 위해 사용
구현하는 모든 클래스에 대해 특정 메서드가 반드시 존재해야 함.
클래스가 아니고, 클래스와 관련이 없고, 한 개의 클래스에 여러개 사용 가능, 구현 객체의 같은 동작을 보장하기 위함

'언어 및 엔진 > C++' 카테고리의 다른 글

[C++] 복사생성자 / 이동생성자  (0) 2024.04.18
[C++] 얕은 복사 / 깊은 복사  (0) 2024.04.18
[C++] 컴파일 작동 순서  (0) 2024.04.18
[C++] 케이디 강좌  (0) 2024.04.17
[C++] Dynamic cast  (0) 2024.04.17