- 상속
- 일반(general)클래스에서 파생되어 더욱 구체적인 클래스를 정의하는데 사용됨
- 상속 관계에서, 하위 클래스(subclass)는 상위 클래스(superclass)의 모든 속성, 작업 및 관계를 상속받으며, 이는 subclass가 superclass의 모든 특성을 재사용하고 확장할 수 있음을 의미 함.
💡 상속(Generalization)은 subclass -> superclass 방향으로 비어있는 세모 화살표로 연결됨.
- 추상 클래스
- 후손 클래스가 상속받게 될 공통된 속성(속성, 함수)를 정의하고, 이를 통해 코드의 중복을 방지하고 유지보수성을 향상시킬 수 있음.
- 추상 클래스는 하나 이상의 추상 메서드(동작)을 포함하며, 이는 추상 클래스를 상속받은 하위 클래스는 반드시 추상 메서드를 구현해야 한다는 것을 의미함.
- 추상 클래스는 자신의 인스턴스를 생성할 수 없음
추상 클래스는 일반적으로 클래스의 일반적인 동작을 정의하고, 실제 구현은 하위 클래스에서 제공되도록 함.
이를 통해 객체지향 프로그래밍에서 클래스 간의 계층 구조를 효과적으로 관리할 수 있도록 함.
💡 추상 클래스는 다이어그램에서 "기울어진 클래스명" 으로 표기
- Polymorphism means
- 동일한 메세지(메서드 호출)여도 받아들이는 객체에 따라 다르게 해석될 수 있음을 의미.
- ex) run을 상속받은 dog와 cat이 있을 때, dog의 distance의 더 많이 증가
- Polymorphism
- Overriding - 상위 클래스의 메서드를 하위 클래스에서 재정의
- Overloading - 여러 개의 메서드가 서로 다른 매개변수를 가짐
- 인터페이스
- 서비스들을 정의하는 특수한 클래스
- 추상 함수와 상수들의 선언을 가질 수 있음
- 멤버 변수는 가질 수 없다.
- 인터페이스를 상속 받았다고 해서 구현이 강제되는 것은 아니다.
- C++에서의 인터페이스
- "순수 가상 함수"만 포함하는 추상 클래스를 의미한다.
- 구현(Realization) 방법 : public 상속
- 일반화(Generalization) 방법 : public 상속
- Java에서의 인터페이스
- "Interface" 라는 키워드를 사용하여 선언
- 구현(Realization) 방법 : implements 키워드
- 일반화(Generalization) 방법 : extends 키워드
💡 interface에 대한 Realization(구현)은 비어있는 삼각 점선 화살표로 클래스 -> 인터페이스 방향으로 표기한다.