Interface
- 클래스들이 구현해야 하는 메서드의 집합을 정의하는 추상 타입
- 다중 상속의 효과를 얻을 수 있으며, 코드의 모듈화와 확장성을 증진
- 객체 간의 상호 작용을 정의하고 표준화하는 데 사용됨
can-do
- 객체 지향 프로그래밍에서 객체의 능력이나 기능을 나타내는 관계
- 인터페이스를 통해 구현되며, 객체가 특정 동작을 수행할 수 있음을 의미
- 느슨한 결합을 촉진하고 코드의 유연성을 높이는 데 기여함
Marker Interface
- 메서드를 포함하지 않는 빈 인터페이스로, 클래스에 특정 속성을 부여하는 데 사용
- 컴파일러나 JVM에게 해당 클래스의 특별한 처리가 필요함을 알리는 역할
- 예: java.io.Serializable, java.lang.Cloneable 등
Annotation
- 코드에 메타데이터를 추가하는 자바의 기능
- 컴파일러 지시나 런타임 처리를 위한 정보를 제공하며, 코드의 가독성을 향상
- 리플렉션을 통해 런타임에 처리될 수 있으며, 커스텀 어노테이션 생성도 가능
Shallow Copy, Deep Copy
- 객체 복사의 두 가지 주요 방식을 나타내는 개념
- Shallow Copy는 객체의 참조값만 복사하여 새로운 객체를 생성
- Deep Copy는 객체의 모든 필드값을 새로운 메모리에 복사하여 완전히 독립된 객체를 생성
FQN (Fully Qualified Name)
- 클래스나 인터페이스의 고유한 식별자로, 패키지명을 포함한 전체 이름
- 네임스페이스 충돌을 방지하고 클래스의 정확한 위치를 지정하는 데 사용
- 예: java.util.ArrayList
Inner Class
- 다른 클래스 내부에 정의된 클래스
- 외부 클래스의 멤버에 쉽게 접근할 수 있으며, 관련 기능을 논리적으로 그룹화
- 정적 내부 클래스, 비정적 내부 클래스, 지역 클래스, 익명 클래스 등 다양한 형태로 존재
WAR, JAR
- 자바 애플리케이션의 배포 형식을 나타내는 파일 확장자
- JAR (Java Archive)는 자바 클래스 파일과 관련 메타데이터, 리소스를 포함하는 패키지 파일
- WAR (Web Application Archive)는 웹 애플리케이션 전체를 패키징한 파일로, 서블릿, JSP, HTML 등을 포함