[OOP] 추상 메서드, 추상 클래스, 인터페이스
2026.07.09. 17:11
추상화를 하면서 부모 클래스를 만듬.
-> 부모 클래스 객체를 만들 필요가 있는가?
부모 클래스에서 선언된 함수를 오버라이딩 하는 구조에서 자식 클래스에서 함수명을 잘못 적거나 하는 등 실수를 할 경우 부모 클래스의 함수를 호출하게 됨. -> 런타임 에러.
이를 빌드 시에 사전에 잡아내기 위해서 추상 메서드를 사용.
-> 구현을 강제함.
구체 클래스에는 추상 메서드가 들어갈 수 없음.
이걸 확장하여 객체를 만들 수 없는 부모 클래스를 만듬. (추상클래스)
++ 이를 통해 부모 클래스의 객체를 생성하지 못하게 하는 효과를 추가로 가짐.
때에 따라 모든 데이터와 구현이 없고 이렇게 구현해줘라는 명세가 필요함. -> 인터페이스 (순수 추상 클래스)
상태, 동작 없음. -> 메서드 시그니쳐만 존재함.(언어 차원에서 지원)
자바에서 인터페이스는 다중 상속이 가능함.
인터페이스는 다형성 구현을 위해 필요.
인터페이스의 정의
주류 언어의 문법을 따름
상태도 메서드 구현도 없는 순수 추상 클래스
public 메서드 시그내처만 모아 놓은 것
C언어의 헤더 파일 같은 존재
OO에서 인터페이스
함수포인터처럼 사용할 수 있는 것 - 다형성
다중상속을 흉내 낼 수 있는 방법 - 다형성
변화에 대비해 결합도를 낮추는 것 - (단, 다형성이 필요할 때)
즉, 다형성 없는 인터페이스는 없다.