한 객체와 다른 객체가 포함관계인 경우를 의미한다. has a 관계는 2가지 종류가 있다.
1) 집합 관계 (Aggregation Relationship)
: whole과 part간의 lifecycle이 다른 경우에 해당한다.
A has a B ex) 자동차 has a 라디오
A가 없어져도 B는 독립적으로 존재할 수 있음을 의미한다.
2) 구성 관계 (Compostion Relationship)
: whole과 part간의 lifecycle이 같은 경우에 해당한다.
A has a C ex) 자동차 has a 엔진
A가 없어지면 C는 독립적으로 존재할 수 없음을 의미한다.
위 사진은 UML에서 집합과 구성관계를 나타낸 것이다.
사진 출처 : https://gmlwjd9405.github.io/2018/07/04/class-diagram.html
비슷한 속성 및 동작을 가진 객체들 간의 관계이다. 비슷한 개념들의 객체들은 모두 공통된 속성 및 동작을 가지고 있으며 이는 결국 공통점들이 중복되어 있다는 것이다. 공통점들을 추출해서 상위개념의 객체로 만들 수 있으며 하위 객체들에게 상위 개념의 객체를 "상속"받아서 사용한다면 중복이 제거되고 재사용성도 향상될 수 있다.
ex) 대학생 is a 학생, 중학생 is a 학생
위 사진은 상속을 uml으로 나타낸 것이다.
사진 출처 : https://gmlwjd9405.github.io/2018/07/04/class-diagram.html
public class 자식클래스 extends 부모클래스 { }
this는 자신의 인스턴스를 의미하고 super는 부모의 인스턴스를 의미한다. super 키워드는 상속관계의 하위클래스에서 상위클래스의 구성요소를 명시적으로 호출할 때 사용된다.
일반적으로 두가지 경우에 사용된다.
자식 클래스에서 부모 클래스의 메서드를 재정의해서 사용하는 것을 오버라이딩이라고 한다. 오버로딩과 구별해야한다.
다형성(polymorphism)이란? 상속관계의 계층구조에서 상위타입의 변수로 모든 하위타입을 참조할 수 있는 특성이다.
다형성을 활용하기 위해서는 필수로 부모-자식 간 클래스 상속이 이루어져야 한다.
다형성이 보장되기 위해서는 하위 클래스 메소드가 반드시 재정의되어 있어야 한다.
부모 타입으로 자식클래스를 업캐스팅하여 객체를 생성해야 한다.