
추상클래스와 인터페이스의 차이가 뭘까?
2021. 1. 23. 14:38
DevLog
추상 클래스(Abstract Class) 클래스는 일반 클래스(Concrete Class)와 추상 클래스로 나뉘는데 추상 클래스는 클래스 구현부 내부에 추상 메서드가 하나 이상 포함되거나 abstract로 정의된 경우를 말한다. 이러한 정의는 피상적인 것 같다. 공통의 자료형이라고 할 수 있는 추상클래스가 갖고 있는 공통 서비스 함수이다. 다만, 공통 서비스인데 구현이 공통인 것이 아니라 그 서비스라고 하는 목록이 공통인 것을 말한다. 이렇게 정의를 하는게 정확하게 전달하는 의미라고 생각한다. 추상 클래스는 new 연산자를 사용하여 객체를 생성할 수 없다. 추상 클래스(부모)와 일반 클래스(자식)는 상속의 관계에 놓여있다. 추상 클래스는 새로운 일반 클래스를 위한 부모 클래스의 용도로만 사용된다. 일반 ..

C++ 다형성과 가상함수
2021. 1. 22. 22:39
DevLog/C & C++
다형성(Polymorphism)이란? 다형성(Polymorphism)은 OOP(Object Oriented Programming)의 개념을 설명할 때 추상화(Abstaction)과 더불어 가장 중요하게 등장하는 용어이다. 다형성은 여러 개의 서로 다른 객체가 동일한 기능을 서로 다른 방법으로 처리 할 수 있는 기능을 의미한다. 예를 들어 칼, 대포, 총 등의 무기들은 공통적으로 '공격'이라는 동일한 기능을 다르게 수행할 수 있다. 따라서 무기 객체에서 attack() 함수를 실질적으로 구현할 필요없이 추상 클래스(Abstract Class)로 구현하면 효과적으로 설계를 할 수 있다. 오버라이딩 문제 자식 클래스에서 멤버 함수를 재정의하여 사용하는 것은 일반적으로 잘 동작하나 포인터 변수로 객체에 접근할 ..