클래스와 객체

클래스는 추상화된 틀, 객체는 추상화된 틀로부터 나온 구체화된 실체라고 볼 수 있다.

보통 붕어빵을 비유로 들어서 설명하는 것을 많이 본 것 같다.

클래스가 붕어빵을 만드는 틀이고, 객체가 붕어빵 자체인 것이다!

이 두 가지가 같은 것이라고 생각해서 혼용하여 사용했었는데, 찾아보니 약간 다른 의미를 가지고 있었다.

다형성 (Polymorphism)

여러가지 형태라는 의미로, 같은 이름으로 다른 기능으로 작동하는 것을 의미한다.

함수 오버로딩, 오버라이딩 등이 다형성을 나타낸다고 할 수 있다

인터페이스

모든 함수가 순수 가상 함수가 이루어져 있는 경우, 해당 클래스를 인터페이스라고 한다

인터페이스를 상속받는 클래스들의 함수의 구현을 강제한다

추상클래스와의 가장 큰 차이점은 다중상속이 가능하다는 점이다. 두가지의 목적이 아래와 같이 전혀 다르기 때문이다. 인터페이스의 목적에 따르면 여러 부모를 갖는 다중 상속도 그저 여러 메서드가 반드시 존재하면 되는 것이기 때문에 상관이 없다