override는 부모 함수의 이름을 유지한 채 자식에게 맞게 동작을 바꾼다

Dog::displayInfo()는 Animal::displayInfo()와 같은 인터페이스를 유지하면서, 부모 출력 뒤에 견종 정보를 추가합니다.

호출
myDog.displayInfo()
사용자는 같은 이름의 함수를 호출한다.
자식 재정의
Dog::displayInfo()
Dog에 맞는 출력 흐름으로 들어간다.
부모 기능 재사용
Animal::displayInfo()
공통 정보 출력 뒤 breed를 덧붙인다.
확인할 것 override가 맞는 조건 틀리면 생기는 문제
함수 이름 부모와 자식의 함수 이름이 같다. 새 함수가 생길 뿐 재정의가 아니다.
매개변수 반환 타입과 매개변수 목록이 호환된다. 오버로딩처럼 보이거나 컴파일 오류가 난다.
override 키워드 자식 함수 뒤에 override를 붙여 검사를 맡긴다. 오타를 컴파일러가 잡아 주지 못한다.
부모 호출 필요하면 Animal::displayInfo()를 먼저 호출한다. 공통 출력이 빠지고 자식 정보만 남는다.
읽는 순서

override는 “부모 함수를 지운다”가 아니라 “같은 약속을 유지하면서 자식 버전으로 바꾼다”입니다. 부모 구현이 필요하면 `Base::함수명()`으로 명시해 이어 붙입니다.