프로그래밍/C++
C++ 문법 - 오버라이딩
게으른구름
2018. 2. 10. 23:57
< 오버라이딩(overriding) >
이전에 오버로딩(overloading)에 대해서 배운 적이 있습니다.
오버로딩은 이름은 같지만 인자의 자료형이나 개수가 다른 것들을 서로 다르다고 판단하는 것입니다.
함수, 메소드, 생성자, 소멸자 등이 가능했습니다.
오버라이딩은 상속 관계에서만 사용되는 개념입니다.
자식 클래스에서 부모 클래스의 메소드(멤버함수) 내용을 바꿔 새로 만들 때 이를 오버라이딩이라고 합니다.
< 오버라이딩 조건 >
다음과 같은 조건을 만족할 때 오버라이딩이 성립합니다.
- 같은 return 형식
- 같은 method 이름
- 같은 파라매터 형식, 개수
< 예제 >
클래스의 상속에서 사용한 예제에 내용을 추가해
Parent class를 public으로 상속한 Child class가 있을 때, set method를 오버라이딩해보겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | class Parent { protected: int 몸무게, 키; public: int set(int one, int two) { 몸무게 = one; 키 = two; cout << "부모의 몸무게 : " << 몸무게 << endl; cout << "부모의 키 : " << 키 << endl; return 1; } }; class Child : public Parent { public: int set(int one, int two) { 몸무게 = one; 키 = two; cout << "자식의 몸무게 : " << 몸무게 << endl; cout << "자식의 키 : " << 키 << endl; return 1; } }; int main() { Child c; c.set(10, 20); return 0; } | cs |
변수 몸무게와 키를 자식 class인 Child class에서 사용해야하므로 접근 범위를 protected로 설정합니다.
같은 return 형식 : int
같은 method 이름 : set
같은 파마래터 형식, 개수 : int one, int two
조건을 맞췄으므로 오버라이딩이 성립합니다.