super
- 자식 클래스에서 부모 클래스의 멤버를 참조하는 데 사용되는 키워드
- 부모 클래스의 생성자를 호출하거나 오버라이드된 메서드의 원본을 호출할 때 활용됨
- 상속 관계에서 부모-자식 클래스 간의 관계를 명확히 하고 코드 재사용성을 높임
final
- 변수, 메서드, 클래스에 사용되어 더 이상의 변경을 막는 제어자
- 변수에 사용 시 상수를 정의하고, 메서드에 사용 시 오버라이딩을 방지함
- 클래스에 사용 시 해당 클래스의 상속을 금지하여 보안성과 안정성을 높임
Association
- 객체 간의 관계를 나타내는 객체 지향 프로그래밍의 개념
- 두 클래스 간에 논리적인 연결이 있음을 의미하며, 독립적으로 존재 가능함
- 'has-a' 관계를 표현하며, 단방향 또는 양방향으로 구현될 수 있음
Aggregation
- Association의 특수한 형태로, '전체-부분' 관계를 나타내는 개념
- 부분 객체가 전체 객체에 속하지만 독립적으로 존재할 수 있음
- 느슨한 결합을 가지며, 전체 객체가 사라져도 부분 객체는 존재할 수 있음
Composition
- Aggregation보다 더 강한 '전체-부분' 관계를 나타내는 개념
- 부분 객체가 전체 객체에 강하게 속하며, 생명주기가 전체 객체에 종속됨
- 전체 객체가 사라지면 부분 객체도 함께 사라지는 강한 결합 관계를 가짐
Dependency
- 한 클래스가 다른 클래스를 사용하는 관계를 나타내는 개념
- 일시적인 관계로, 메서드의 매개변수나 지역 변수로 다른 클래스를 사용함
- 한 클래스의 변경이 다른 클래스에 영향을 줄 수 있는 가장 약한 연결 관계
Dynamic Binding
- 실행 시간에 메서드 호출을 결정하는 메커니즘
- 다형성을 구현하는 핵심 개념으로, 오버라이딩된 메서드의 실제 구현을 런타임에 결정함
- 코드의 유연성을 높이고 확장성을 개선하는 데 중요한 역할을 함
Upcasting
- 자식 클래스의 객체를 부모 클래스 타입으로 형변환하는 것
- 다형성을 구현하는 데 사용되며, 자동으로 수행됨
- 부모 클래스의 멤버만 접근 가능하게 되어 일반화된 처리가 가능해짐
Polymorphic Parameters
- 메서드의 매개변수로 다형성을 적용하는 기법
- 부모 클래스 타입의 매개변수로 여러 자식 클래스 객체를 받을 수 있음
- 코드의 재사용성과 확장성을 높이는 데 기여함
Heterogeneous Collections
- 서로 다른 타입의 객체들을 하나의 컬렉션에 저장하는 것
- 보통 공통 부모 클래스나 인터페이스 타입으로 저장됨
- 다양한 객체를 통일된 방식으로 처리할 수 있어 유연성이 높아짐
Abstract
- 추상 클래스나 메서드를 정의하는 데 사용되는 키워드
- 구체적인 구현 없이 메서드의 시그니처만 정의하여 자식 클래스에서 구현을 강제함
- 공통된 특성을 정의하고 확장성을 제공하여 객체 지향 설계의 근간이 됨