이상민
[혼공자바 3주차] Chapter 06 본문
혼자공부하는 자바 3주차 (p.234 ~ p.329)
06. 클래스
06-1 객체 지향 프로그래밍
| 클래스 | 객체를 만들기 위한 설계도 |
| 객체 | 클래스로부터 생성된 실체, new 클래스이름(); 으로 생성 |
| new 연산자 | 객체를 생성하고 생성자 호출, 객체 번지를 리턴 |
| 클래스 변수 | 클래스 타입으로 선언된 변수 (객체 참조 저장) |
| 인스턴스 | 객체는 클래스의 인스턴스 |
| 클래스 멤버 | 클래스 내 선언된 필드, 메서드, 생성자 |



06-2 필드
| 필드 선언 | 클래스 중괄호 {} 안에서 선언. 생성자/메서드 내부에서는 ❌ |
| 필드 사용 | 클래스 내부에서는 바로 사용 가능, 외부에서는 객체 생성 후 접근 필요 |


06-3 생성자
| 기본 생성자 | 컴파일러가 자동 추가 (다른 생성자 없을 경우) |
| 명시적 생성자 | 개발자가 직접 정의한 생성자. 선언하면 기본 생성자는 생성되지 않음 |
| 매개변수 | 생성자 호출 시 전달받는 값 |
| 객체 초기화 | 필드 초기화 or 메서드 호출로 설정 |
| 오버로딩 | 매개변수가 다른 생성자를 여러 개 선언 |
| this() | 자신의 다른 생성자를 호출할 때 사용 |




06-4 메서드
| 선언부 | 리턴 타입, 메서드 이름, 매개변수 포함 |
| void | 리턴값이 없음을 의미 |
| return 문 | 리턴 타입이 있을 경우 반드시 필요 |
| 호출 | 메서드이름(값, ...) 형태 |
| 오버로딩 | 동일한 이름의 메서드를 여러 개 선언. 조건: 매개변수 타입/개수/순서 다름 |
public void printInfo() {
System.out.println("정보 출력");
}
public void printInfo(String name) {
System.out.println("이름: " + name);
}








06-5 인스턴스 멤버와 정적 멤버
| 인스턴스 멤버 | 객체 생성 후 사용할 수 있는 멤버 (필드, 메서드) |
| this | 인스턴스 자신을 가리키는 참조자 |
| 정적 멤버 (static) | 클래스에 고정된 멤버. 객체 없이도 사용 가능 |
| 싱글톤 | 프로그램에서 단 하나만 생성되도록 보장되는 객체 |
| final 필드 | 한 번 초기화되면 변경 불가 |
| 상수 | final static으로 선언된 불변 값 |
public class Calculator {
static final double PI = 3.14159; // 상수
final int id; // final 필드
Calculator(int id) {
this.id = id;
}
}

06-6 패키지와 접근 제한자
| 패키지 선언 | 클래스 상단에 package 패키지명; 형태로 작성 |
| import 문 | 다른 패키지의 클래스 사용 시 필요 |
| 접근 제한자 | 외부 접근 제어 목적. 클래스, 필드, 메서드, 생성자 등에 사용 |
package com.example.car;
import java.util.Scanner;
접근 제한자 종류
| public | 모든 클래스에서 접근 가능 |
| protected | 같은 패키지 + 자식 클래스에서 접근 |
| (default) | 같은 패키지 내에서만 접근 |
| private | 해당 클래스 내부에서만 접근 가능 |
Getter / Setter 예시
public class Member {
private String name;
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
}

기본 숙제(필수) : 어렵게나 중요하다고 생각하는 용어를 혼공용어 노트에 정리하고 공유하기



추가 숙제(선택) : 객체 지향 프로그래밍의 개념 정리하기
객체 지향 프로그래밍 : 객체를 하나씩 조립해서 완성된 프로그램을 만드는 기법
1. 필드
- 클래스에 선언된 변수
- 객체의 속성(데이터)을 저장
- 보통 private으로 선언하고 getter/setter로 접근
private String name; // 필드
private int age; // 필드
}
2. 생성자
- 객체 생성 시 자동 호출되는 메서드
- 클래스 이름과 같고, 리턴 타입 없음
- 오버로딩 가능
String name;
// 기본 생성자
public Person() {
this.name = "홍길동";
}
// 매개변수 있는 생성자
public Person(String name) {
this.name = name;
}
}
3. 메서드
- 동작/기능을 정의
- 객체의 행동을 구현
- returnType methodName(매개변수) { }
public int add(int a, int b) {
return a + b;
}
}
4. 인스턴스 멤버
- 객체가 생성되어야만 사용할 수 있는 멤버
- 필드, 메서드 앞에 static이 없는 경우
int speed = 0; // 인스턴스 필드
void run() { // 인스턴스 메서드
System.out.println("달립니다.");
}
}
// 사용
Car c = new Car();
c.run(); // 인스턴스 메서드 호출
5. 정적 멤버
- 클래스 자체에 속하는 멤버
- 객체 생성 없이 사용 가능
- static 키워드 사용
static double PI = 3.14; // 정적 필드
static int square(int x) { // 정적 메서드
return x * x;
}
}
// 사용
double p = MathUtil.PI;
int result = MathUtil.square(5);
6. 패키지
- 관련 클래스들을 논리적으로 묶는 공간
- 파일 상단에 package 선언
- 폴더 구조와 연동
- import를 통해 다른 패키지의 클래스 사용 가능
7. 접근 제한자
| public | 어디서든 접근 가능 |
| protected | 같은 패키지 + 상속받은 클래스에서 가능 |
| default (없을 경우) | 같은 패키지 내에서만 접근 가능 |
| private | 해당 클래스 내부에서만 접근 가능 |
public String name; // 어디서든 접근 가능
protected int age; // 같은 패키지 + 자식 클래스
String address; // default (같은 패키지)
private String password; // 클래스 내부만
}
'혼공' 카테고리의 다른 글
| [혼공자바 5주차] Chapter 08~09 (4) | 2025.08.08 |
|---|---|
| [혼공자바 4주차] Chapter 07 (4) | 2025.07.27 |
| [혼공자바 2주차] Chapter 04 ~ 05 (1) | 2025.07.07 |
| [혼공자바 1주차] Chapter 01 ~ 03 (1) | 2025.07.01 |
| [혼공컴운 6주차] Chapter 14 ~ 15 (1) | 2024.02.06 |