본문 바로가기
반응형

java3

인터페이스 vs 추상 클래스 (Java, C++ 비교) C, C++ 전체 링크 인터페이스 vs 추상 클래스 (Java) 인터페이스 - 객체의 사용 방법을 정의한다. - 함수의 구현을 강제한다. - class 대신 interface 키워드 사용. - 상수와 메서드만을 가진다. 추상 클래스 - 상속을 위해 사용한다. - 추상 메서드를 가진다. - abstract 키워드 사용, new를 통해 객체 생성 불가. - abstract 메서드는 자식 클래스에서 반드시 구현해야 한다. (오버라이딩) 인터페이스와 추상 클래스 예시 청둥 오리와 모형 오리는 오리(Duck)을 상속한다. 이때 Duck은 추상 클래스다. 청둥 오리(Mallard)는 날 수 있다. 그러나 모형 오리(Model)는 날 수 없다. 따라서 fly()라는 행동은 FlyBehavior 인터페이스로 표현하고 .. 2022. 2. 5.
C++ - virtual, type casting C, C++ 전체 링크 이전 글에서 다시 virtual 키워드를 지우고, main을 아래와 같이 작성해보자. FOOD type에 MILK로 객체를 생성한 후, SNACK으로 type casting하여 printName을 호출한다. #include #include using namespace std; class FOOD { private: int price = 0; public: void printName() { cout 2021. 8. 15.
C++ - virtual 키워드 C, C++ 전체 링크 아래의 클래스를 보자. SNACK과 MILK 클래스는 FOOD 클래스를 상속한다. #include #include using namespace std; class FOOD { private: int price = 0; public: void printName() { cout printPrice(); foodList[i]->printLine(); } return 0; } 출력결과는 예상과 다르다. foodList의 원래 형태는 FOOD class지만, 실제 객체는 SNACK이나 MILK가 된다. 그러나 FOOD의 printName과 printPrice가 실행되었다. 즉, 형변환이 이루어진 포인터 변수는 원래 형태(부모)의 함수를 호출하게 된다. virtual을 이용하면 형변환이 이루.. 2021. 8. 14.
반응형