반응형
클래스와 객체 — 객체 지향 프로그래밍 첫걸음
자바를 배우면서 가장 중요한 개념이 바로 클래스와 객체예요.
처음엔 조금 어렵게 느껴질 수 있지만, 이걸 이해하면 자바의 진짜 힘을 쓸 수 있어요! 🏗️
📌 이 글에서 다룰 내용
- 객체 지향 프로그래밍이란?
- 클래스 만들기
- 객체 생성하기
- 생성자 (Constructor)
- 캡슐화 — getter와 setter
- 실습 — 학생 클래스 만들기
1. 객체 지향 프로그래밍이란?
객체 지향 프로그래밍(OOP) 은 현실 세계의 사물을 코드로 표현하는 방식이에요.
예를 들어 "자동차"를 코드로 표현한다면?
- 속성(필드) — 색깔, 브랜드, 속도, 연료량
- 행동(메서드) — 출발(), 정지(), 가속(), 주유()
이처럼 데이터(속성)와 기능(행동)을 하나로 묶은 게 클래스예요.
그리고 클래스를 바탕으로 만든 실제 사물이 객체(인스턴스) 예요.
💡 클래스 = 설계도, 객체 = 설계도로 만든 실제 제품
2. 클래스 만들기
public class Car {
// 필드 (속성)
String brand;
String color;
int speed;
// 메서드 (행동)
void drive() {
System.out.println(brand + " 출발!");
}
void accelerate(int amount) {
speed += amount;
System.out.println("현재 속도: " + speed + "km/h");
}
void stop() {
speed = 0;
System.out.println(brand + " 정지!");
}
}
3. 객체 생성하기
클래스(설계도)로 객체(실제 차)를 만들려면 new 키워드를 써요.
public class Main {
public static void main(String[] args) {
// 객체 생성
Car myCar = new Car();
// 필드에 값 넣기
myCar.brand = "현대";
myCar.color = "빨강";
myCar.speed = 0;
// 메서드 호출
myCar.drive();
myCar.accelerate(60);
myCar.stop();
}
}
현대 출발!
현재 속도: 60km/h
현대 정지!
설계도 하나로 여러 객체를 만들 수 있어요.
Car car1 = new Car();
car1.brand = "현대";
Car car2 = new Car();
car2.brand = "기아";
4. 생성자 (Constructor)
객체를 만들 때 초기값을 한 번에 설정하는 특별한 메서드예요.
클래스 이름과 같고, 반환 타입이 없어요.
public class Car {
String brand;
String color;
int speed;
// 생성자
Car(String brand, String color) {
this.brand = brand;
this.color = color;
this.speed = 0;
}
void drive() {
System.out.println(color + " " + brand + " 출발!");
}
}
Car myCar = new Car("현대", "빨강");
myCar.drive(); // 빨강 현대 출발!
💡
this는 지금 이 객체 자신을 가리켜요.
필드 이름과 매개변수 이름이 같을 때this.brand로 구분해줘요.
5. 캡슐화 — getter와 setter
필드를 외부에서 직접 수정하면 잘못된 값이 들어올 수 있어요.private 으로 필드를 숨기고, getter/setter 메서드 로만 접근하게 해요.
public class Student {
private String name;
private int age;
Student(String name, int age) {
this.name = name;
setAge(age); // setter를 통해 유효성 검사
}
// getter
public String getName() { return name; }
public int getAge() { return age; }
// setter (유효성 검사 포함)
public void setAge(int age) {
if (age > 0 && age < 150) {
this.age = age;
} else {
System.out.println("올바른 나이를 입력하세요.");
}
}
}
Student s = new Student("홍길동", 25);
System.out.println(s.getName()); // 홍길동
System.out.println(s.getAge()); // 25
s.setAge(-5); // 올바른 나이를 입력하세요.
6. 실습 — 학생 클래스 만들기
StudentManager.java 파일을 만들고 아래 코드를 작성해요.
import java.util.ArrayList;
class Student {
private String name;
private int score;
Student(String name, int score) {
this.name = name;
this.score = score;
}
public String getName() { return name; }
public int getScore() { return score; }
public String getGrade() {
if (score >= 90) return "A";
else if (score >= 80) return "B";
else if (score >= 70) return "C";
else return "D";
}
public void printInfo() {
System.out.printf("%-8s | %3d점 | %s학점%n", name, score, getGrade());
}
}
public class StudentManager {
public static void main(String[] args) {
ArrayList<Student> students = new ArrayList<>();
students.add(new Student("홍길동", 92));
students.add(new Student("김철수", 78));
students.add(new Student("이영희", 85));
students.add(new Student("박민준", 67));
System.out.println("=== 학생 성적표 ===");
for (Student s : students) {
s.printInfo();
}
}
}
=== 학생 성적표 ===
홍길동 | 92점 | A학점
김철수 | 78점 | C학점
이영희 | 85점 | B학점
박민준 | 67점 | D학점
오늘 배운 것 정리
- ✅ 클래스는 설계도, 객체는 설계도로 만든 실제 제품이에요.
- ✅
new키워드로 객체를 생성해요. - ✅ 생성자로 객체 생성 시 초기값을 설정할 수 있어요.
- ✅
private필드와 getter/setter로 데이터를 안전하게 관리해요.
🎯 다음 편 예고
드디어 마지막 편! 10편에서는 지금까지 배운 모든 것을 활용한 미니 프로젝트를 만들어봐요!
이 글이 도움이 됐다면 다음 편도 같이 읽어봐요 😊 질문이 있으면 언제든지 댓글로 남겨주세요!
'프로그래밍 언어 > Java' 카테고리의 다른 글
| 자바 미니 프로젝트 — 자바로 도서 관리 프로그램 만들기(Java 기초) (1) | 2026.03.22 |
|---|---|
| 자바 메서드 함수 — 코드를 재사용 가능한 블록으로 만들기(Java 기초) (0) | 2026.03.21 |
| 자바 배열과 ArrayList — 데이터를 묶어서 관리하기(Java 기초) (1) | 2026.03.21 |
| 자바 반복문 for문 — for와 while로 반복 작업 처리하기(Java 기초) (0) | 2026.03.20 |
| 조건문 if문 — if와 switch로 상황에 맞게 분기하기(Java 기초) (0) | 2026.03.20 |