Java / / 2024. 7. 14. 18:59

JavaBeans와 객체 관리: 복사, 동일성, 동등성, 그리고 리팩토링

자바의 필드와 프로퍼티에 대한 이해 🌟

 

Field (필드): 클래스 내에 선언된 변수로, 객체의 상태를 저장하는 데 사용됩니다. 예를 들어, private int age;와 같이 선언됩니다.

Property (프로퍼티): 자바에서 명확히 정의된 개념은 아니지만, 일반적으로 getter와 setter 메서드를 통해 접근할 수 있는 필드를 의미합니다. 필드에 직접 접근하지 않고 메서드를 통해 접근하는 것을 말합니다.

 

JavaBeans의 특징과 규약 🌱

 

JavaBeans는 자바에서 재사용 가능한 소프트웨어 컴포넌트를 만들기 위한 표준을 정의합니다. GUI 컴포넌트 및 엔터프라이즈 애플리케이션 개발에 사용되며, 다음과 같은 특징과 규약이 있습니다:

 

주요 특징

 

1. Serializable: JavaBean은 직렬화 가능해야 합니다. 이는 JavaBean을 파일로 저장하거나 네트워크를 통해 전송할 수 있음을 의미합니다.

2. 무인자 생성자: JavaBean은 매개변수가 없는(public) 생성자를 가져야 합니다. 이는 JavaBean이 쉽게 인스턴스화될 수 있도록 하기 위함입니다.

3. Getter와 Setter 메소드: JavaBean의 속성(property)은 public getter와 setter 메소드를 통해 접근할 수 있어야 합니다.

 

규약

 

1. 프로퍼티 (Properties): 일반적으로 private 필드로 선언되고, public getter 및 setter 메소드를 통해 접근합니다.

2. Getter 메소드: getter 메소드는 get 접두사와 프로퍼티 이름을 사용합니다. 예를 들어, age 프로퍼티의 getter 메소드는 getAge입니다. boolean 타입의 경우 is 접두사를 사용할 수 있습니다.

3. Setter 메소드: setter 메소드는 set 접두사와 프로퍼티 이름을 사용합니다. 예를 들어, age 프로퍼티의 setter 메소드는 setAge입니다.

 

자바의 생성자 🛠

public MountainBike(int startHeight, int startCadence, int startSpeed, int startGear) {
    super(startCadence, startSpeed, startGear);
    seatHeight = startHeight;
}

 

슈퍼클래스 생성자 호출: 서브클래스 생성자의 첫 번째 라인에서 호출해야 합니다.

 

디버깅과 디폴트 생성자 🧐

 

Debug: 기계어 코드를 실행하면서 소스코드와 매칭된 디버깅 단계를 보여줍니다.

디폴트 생성자: 컴파일러가 자동으로 생성하는 생성자로, 상속 계층에서 다이렉트 슈퍼클래스를 호출할 때 사용됩니다.

 

얕은 복사 vs 깊은 복사 📝

 

Shallow Copy (얕은 복사): 객체의 필드 값을 그대로 복사하지만, 참조 타입의 경우 참조 값(주소)만 복사합니다. 따라서 원본과 복사본이 동일한 참조를 가집니다.

Deep Copy (깊은 복사): 객체의 모든 필드 값을 복사하고, 참조 타입일 경우 참조 객체도 새로 생성하여 복사합니다. 원본과 복사본이 독립적인 상태가 됩니다.

 

자바에서 객체 비교: 동일성 vs 동등성 🔍

 

동일성 (Identity): 두 객체가 같은 메모리 주소를 참조하는지 비교합니다. == 연산자를 사용합니다.

동등성 (Equality): 두 객체가 같은 상태를 가지는지 비교합니다. equals() 메소드를 사용하며, 객체의 내용을 비교합니다.

 

hashSet과 컬렉션의 원리 🌐

 

hashSet: 중복된 값을 허용하지 않는 컬렉션입니다. hashcode()equals() 메서드를 사용하여 중복을 검사합니다.

 

finalize() 메서드와 객체 소멸 💀

 

The finalize() Method: Object 클래스에서 제공하는 콜백 메서드로, 객체가 가비지 상태가 될 때 호출될 수 있습니다. 그러나 호출 시기나 여부는 불확실하므로 정리 작업에 의존하지 않는 것이 좋습니다.

 

추상 클래스의 역할 🎨

 

1. 기본 구현 제공: 하위 클래스들이 공통으로 사용할 수 있는 기본 구현을 제공합니다.

2. 공통 인터페이스 정의: 하위 클래스들이 반드시 가져야 하는 속성이나 메서드를 정의합니다.

3. 템플릿 역할: 하위 클래스들이 상속받아 확장할 수 있는 템플릿 역할을 합니다.

4. 객체 타입 제한: 특정 타입의 객체만을 허용하도록 제한할 수 있습니다.

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유