자바의 필드와 프로퍼티에 대한 이해 🌟
• 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. 객체 타입 제한: 특정 타입의 객체만을 허용하도록 제한할 수 있습니다.
'Java' 카테고리의 다른 글
제네릭과 객체 비교의 심화: Bounded Type Parameters와 오토박싱 이해하기 (0) | 2024.07.16 |
---|---|
제네릭과 인터페이스 활용 (0) | 2024.07.15 |
리팩토링: 코드 최적화의 기술, 소수 구하기 (0) | 2024.07.10 |
자바 인터페이스의 확장: 다재다능한 API 설계를 위한 디폴트 및 정적 메서드 활용 (0) | 2024.07.09 |
Key Concepts of Hash Tables, Inheritance, and Object Copying (0) | 2024.07.08 |