High Level Programming Language(116)
-
equals() 메서드의 5대 계약 원칙
자바에서 equals() 메서드를 오버라이딩할 때 반드시 따라야 하는 "5대 계약 원칙(5 contracts of equals method)"은 객체의 논리적 동등성을 안정적으로 비교하기 위한 필수 조건들입니다. 이 계약들은 자바 API 문서(java.lang.Object.equals)에 명시되어 있으며, 컬렉션이나 정렬, 캐시, ORM 등 다양한 컴포넌트에서 올바른 동작을 보장하기 위해 절대 위반해서는 안 되는 규칙들입니다. 📌 equals() 메서드의 5대 계약 원칙1. 반사성 (Reflexivity)어떤 객체 x에 대해, x.equals(x)는 항상 true여야 합니다.자신과의 비교는 항상 참이어야 하며, 이는 기본적인 자기동일성 원칙입니다.위반하면 자료구조에서 무한 루프가 발생할 수도 있음.Pe..
2025.04.23 -
Object.equals()
🔍 1. 객체의 동일성 vs 동등성 – JVM 메모리 관점✅ 객체의 동일성 (Identity)== 연산자는 두 레퍼런스가 같은 힙 객체를 가리키는지를 비교합니다.즉, System.identityHashCode()가 같을 가능성이 높고, 힙 메모리 상의 주소가 동일하다는 것을 의미합니다.JVM 수준에서 동일한 object header를 공유하게 됩니다.A a1 = new A();A a2 = a1;System.out.println(a1 == a2); // true ✅ 객체의 동등성 (Equality)equals()는 논리적으로 같은지(동등한 값인지)를 비교합니다.두 객체가 서로 다른 힙 주소를 갖고 있어도, 논리적으로 같다고 판단할 수 있습니다.이 비교는 대부분 객체 내부의 필드 상태를 기준으로 수행됩니다..
2025.04.23 -
POJO vs JavaBean
POJO(Plain Old Java Object)와 JavaBean은 모두 "순수한 자바 객체"를 의미하지만, 용도와 규칙, 그리고 프레임워크 친화성 측면에서 차이가 있습니다. 아래에서 두 개념을 명확히 비교해드리겠습니다. ✅ POJO vs JavaBean 비교 정리구분POJO (Plain Old Java Object)JavaBean정의아무런 제약 없이 작성된 순수 자바 객체특정 명명 규칙을 따르는 자바 객체필수 조건없음 (제약 거의 없음)1) public 디폴트 생성자2) private 필드3) getter/setter 메서드생성자어떤 생성자든 가능반드시 디폴트 생성자(no-arg constructor) 필요접근자필드 접근 방식 자유반드시 getter/setter로 필드 접근접근 제어자필드 public..
2025.04.23 -
JavaBean의 Property란?
자바빈(JavaBean)의 속성(Property)은 간단히 말해, private 필드와 그 필드를 읽고 쓰기 위한 public getter/setter 메서드로 구성된 객체의 상태 정보입니다. ✅ 1. 자바빈 속성의 정의속성(property)은 내부적으로 private 필드이며,외부에서는 해당 필드를 public 메서드(getter/setter)를 통해 접근합니다.즉, 속성은 다음과 같은 구성으로 정의됩니다:public class Person { private String name; // ← 속성 (Property) public String getName() { // getter return name; } public void setName(String name) {..
2025.04.23 -
자바의 오버라이딩과 공변 리턴 타입(Covariant Return Type) 완벽 가이드
🔁 자바의 오버라이딩과 공변 리턴 타입(Covariant Return Type) 완벽 가이드자바에서 메서드를 오버라이드할 때, 리턴 타입은 반드시 상위 클래스와 동일해야 할까요?정답은 아니오입니다. 자바 5부터는 공변 리턴 타입(Covariant Return Type)이라는 개념이 도입되어,"리턴 타입의 하위 타입"으로도 오버라이딩이 가능합니다. 이 글에서는 공변 리턴 타입의 개념과 예제, 그리고 주의사항까지 상세히 다뤄보겠습니다. 📌 1. 오버라이딩 기본 규칙 요약메서드를 오버라이드(Override)하려면 다음 조건을 충족해야 합니다:메서드 이름이 동일해야 함파라미터 개수와 타입이 동일해야 함리턴 타입도 동일해야 함 → 또는 공변 리턴 타입 사용 가능 🔍 2. 공변 리턴 타입(Covariant R..
2025.04.23 -
하위 클래스와 내부 클래스의 private 멤버 접근 이해하기
🧩 자바에서 private 멤버 접근: 상속과 내부 클래스의 관점자바의 캡슐화(Encapsulation) 개념은 객체지향 프로그래밍의 핵심 요소 중 하나입니다. 이 개념을 이해하기 위해선 private 키워드가 실제로 어떤 제한을 두는지 명확히 알아야 합니다.이번 글에서는 상속 구조에서 하위 클래스가 상위 클래스의 private 멤버에 접근할 수 있는가, 그리고 내부 클래스(inner class)에서는 어떻게 접근이 가능한가를 코드 예제와 함께 정리해보겠습니다. 📌 1. 하위 클래스는 상위 클래스의 private 멤버를 상속하지 않는다자바에서 private 멤버는 해당 클래스 내부에서만 접근 가능합니다. 하위 클래스에서는 직접 접근할 수 없습니다.class SuperClass { private ..
2025.04.23