[Java] 클래스와 객체

션션·2026년 1월 28일

Java

목록 보기
3/10
post-thumbnail

1. 함수(Function): 코드의 재사용성 높이기

함수는 특정 작업을 수행하는 코드 블록입니다. 반복되는 코드를 하나로 묶어 관리하면 가독성이 좋아지고 유지보수가 쉬워집니다.

  • 구성 요소: 반환 타입(Return Type), 함수 이름, 매개변수(Parameter), 함수 내용
  • 특징: return 구문은 반환 타입이 void인 경우 생략할 수 있습니다.

2. 클래스(Class)와 객체(Object)

클래스란?

관련 있는 변수(필드)함수(메서드)를 하나로 묶은 사용자 정의 자료형입니다. 흔히 객체를 만들기 위한 설계도(Blueprint) 또는 붕어빵 틀에 비유합니다.

객체(인스턴스)란?

클래스라는 설계도를 바탕으로 메모리에 실제 생성된 결과물입니다. (예: 붕어빵 틀에서 구워져 나온 붕어빵)

클래스의 3대 구성 요소

  1. 필드(Field): 객체의 속성(데이터)을 정의하는 변수
  2. 메서드(Method): 객체의 동작(기능)을 정의하는 코드 블록
  3. 생성자(Constructor): 객체 생성 시 필드를 초기화하는 특별한 메서드

3. 메서드(Method)와 변수의 종류

변수의 종류

구분선언 위치생성 시점특징
클래스 변수필드 (static 키워드)클래스 로드 시모든 인스턴스가 공유함
인스턴스 변수필드 (키워드 없음)인스턴스 생성 시각 인스턴스마다 별도 존재
지역 변수메서드/생성자 내부블록 실행 시블록 종료 시 소멸

메서드 오버로딩 (Overloading)

이름은 같지만 매개변수의 개수, 타입, 순서가 다른 메서드를 여러 개 정의하는 것입니다.

⚠️ 주의: 반환 타입(Return Type)만 다르거나 매개변수 이름만 다른 것은 오버로딩으로 인정되지 않습니다!


4. 생성자(Constructor): 객체 생성의 시작

생성자는 객체가 만들어질 때 반드시 호출되는 도구입니다.

  • 규칙: 클래스 이름과 동일해야 하며, 반환 타입이 없습니다.
  • this vs this():
  • this.: 필드와 매개변수의 이름이 같을 때 인스턴스 자신을 가리키기 위해 사용합니다.
  • this(): 같은 클래스 내의 다른 생성자를 호출할 때 사용하며, 반드시 첫 번째 줄에 위치해야 합니다.

5. 헷갈리는 부분 정리

공부하면서 가장 헷갈렸던 부분들을 정리했습니다.

Q1. 생성자에 void를 붙이면 왜 안 되나요?

A: Java에서 생성자는 반환 타입이 없어야 합니다. 만약 public void Movie()라고 쓰면, 컴파일러는 이를 생성자가 아닌 일반 메서드로 인식합니다. 결국 new Movie()를 호출했을 때 호출할 생성자가 없어 에러가 발생합니다.

Q2. 매개변수 생성자를 만들었는데 기본 생성자가 안 만들어져요.

A: 개발자가 생성자를 하나도 안 쓰면 컴파일러가 '기본 생성자'를 자동으로 넣어주지만, 매개변수 생성자를 하나라도 만드는 순간 자동으로 넣어주지 않습니다. 따라서 습관적으로 기본 생성자를 함께 선언해 주는 것이 좋습니다.

Q3. 가변인자(int... nums) 사용 시 주의점은?

A: 가변인자는 항상 매개변수의 마지막 위치에 딱 하나만 올 수 있습니다. 내부적으로는 배열처럼 동작합니다.


6. 객체지향 프로그래밍(OOP)의 4대 특징

객체지향의 핵심은 A PIE로 기억하면 쉽습니다!

  1. A - Abstraction (추상화): 불필요한 정보는 숨기고 중요한 핵심 속성만 추출하는 것.
  2. P - Polymorphism (다형성): 하나의 객체나 메서드가 여러 가지 형태를 가질 수 있는 성질.
  3. I - Inheritance (상속): 부모 클래스의 기능을 자식 클래스가 물려받아 재사용하는 것.
  4. E - Encapsulation (캡슐화): 데이터와 기능을 하나로 묶고 외부 접근을 제한하여 데이터를 보호하는 것.

0개의 댓글