JAVA

Java.객체와 클래스

calla1013 2025. 4. 25. 17:22

🌟 객체 지향 프로그래밍과 자바 클래스 완전 정리!

객체 지향 프로그래밍(OOP)의 핵심 개념부터 자바 클래스, 생성자, 싱글톤 패턴, 리플렉션 활용까지 한눈에 이해할 수 있도록 정리했습니다.

목차

  1. 🌟 객체 지향 프로그래밍의 핵심
  2. 📘 클래스와 객체의 관계
  3. 📚 클래스의 구성 요소
  4. 🛠️ 자바(JAVA) 생성자와 this 키워드
  5. 📚 자바에서의 필드와 캡슐화 개념
  6. 🚀 싱글톤(Singleton) 패턴의 개념과 적용
  7. 📘 클래스 리플렉션의 활용

객체 지향 프로그래밍(OOP)

객체 지향 프로그래밍은 프로그램을 만드는 방법 중 하나로, 마치 레고 블록처럼 ‘객체’라는 부품들을 조립해 전체 프로그램을 만듭니다.
코드를 더 쉽게 이해하고 수정하며 재사용할 수 있게 해줍니다.

객체(Object)

객체는 실제 세계의 물건이나 개념을 컴퓨터 내에 구현한 것입니다.
예를 들어 ‘강아지’ 객체는 이름, 나이, 품종 같은 상태와 짖기, 먹기, 걷기 같은 행동을 가집니다.

클래스(Class)

클래스는 객체를 만들기 위한 ‘설계도’입니다.
붕어빵 틀이 클래스라면, 붕어빵은 클래스에서 찍어낸 객체인 셈이죠.
클래스 안에는 객체가 가질 상태(필드)와 행동(메서드)이 정의되어 있습니다.

캡슐화(Encapsulation)

객체 내부의 정보를 숨기고 보호하는 개념입니다.
마치 약을 감싸는 캡슐처럼, 중요한 데이터를 외부에서 직접 바꾸지 못하게 막고
정해진 메서드를 통해서만 접근할 수 있도록 합니다.

싱글톤(Singleton) 패턴

싱글톤 패턴은 오직 하나의 객체만 만들도록 보장하는 디자인 방법입니다.
‘대통령’처럼 프로그램 내에서 단 하나만 존재해야 하는 객체에 적용합니다.


1. 🌟 객체 지향 프로그래밍의 핵심

  • 모든 데이터를 객체로 취급하며, 객체가 프로그램의 중심
  • 객체는 상태(변수)와 행위(함수)를 가짐
  • 절차 지향은 순차적 흐름 구현, 객체 지향은 객체 단위로 나누어 작성
  • 코드 재사용성 향상 및 유지보수 편리

2. 📘 클래스와 객체의 관계

  • 클래스는 상태와 행위가 같은 객체들을 위한 설계도
  • 상태는 필드(예: 이름, 나이), 행위는 메서드(예: 말하기, 달리기)
  • 클래스와 객체는 공통 속성과 행위 기반 특정 객체 구현

3. 📚 클래스의 구성 요소

  • 필드: 객체 상태 설명하는 속성
  • 생성자: 객체 생성 시 초기화 작업 수행하는 특별 메서드
  • 메서드: 객체의 행동 정의

4. 🛠️ 자바 생성자와 this 키워드

  • 생성자는 클래스 이름과 같고, 객체 생성 시 자동 호출
  • 생성자 미정의 시 기본 생성자 호출, 필드 기본값으로 초기화
  • 여러 생성자 정의 가능 (오버로딩)
  • this: 객체 자신 참조, 지역변수와 필드 구분용
  • this(): 현재 클래스 내 다른 생성자 호출

5. 📚 자바 필드와 캡슐화

  • 객체 속성은 변수와 상수로 정의
  • 캡슐화로 필드 직접 접근 제한, 메서드를 통한 접근 권장
  • 정적 필드와 메서드는 클래스 자체에 속해 객체 생성 없이 사용 가능
  • 정적 메서드는 주로 기능 중심 메서드에 활용

6. 🚀 싱글톤(Singleton) 패턴의 개념과 적용

  • 클래스가 최초 1회만 객체 생성
  • 이후 호출 시 항상 동일 객체 반환
  • 메모리 낭비 방지, 전역에서 하나의 객체 필요할 때 사용

7. 📘 클래스 리플렉션의 활용

  • 런타임 시 클래스의 생성자, 필드, 메서드 정보 조회 가능
  • getMethods(): 클래스 내 메서드 목록 확인
  • getFields(): 필드 정보 확인
  • getConstructors(): 생성자 확인
  • getInterfaces(): 구현한 인터페이스 확인
  • getSuperclass(): 상위 클래스 정보 확인

객체 지향 프로그래밍과 자바 클래스에 대한 기본 개념을 이해하면, 더 견고하고 유지보수하기 쉬운 코드를 작성할 수 있습니다.

'JAVA' 카테고리의 다른 글

Java.기본 API 클래스  (1) 2025.05.24
Java.상속과 인터페이스  (1) 2025.04.25
Java.컬렉션  (0) 2025.04.25
Java. 배열  (0) 2025.04.01
Java. 메소드  (1) 2025.04.01