학습
Java 클래스와 객체 기초
Java 클래스와 객체 기초 — 초급
클래스와 객체 기초
1. 도입 (왜 배워야 하는가)
클래스와 객체는 Java 프로그래밍의 핵심 개념입니다. 이 두 개념이 없으면, 프로그램을 모듈화하고 코드 재사용성을 높이는 것이 불가능합니다. 실무에서는 복잡한 시스템을 관리하기 위해 객체 지향 프로그래밍(OOP) 패러다임이 많이 사용되며, 이를 통해 개발자들은 더 쉽게 협업하고 유지보수할 수 있습니다. 클래스를 이해하지 못한다면, 코드의 구조를 잡기 어렵고, 나중에 발생할 수 있는 오류를 디버깅하는 데 큰 어려움을 겪게 될 것입니다.
2. 핵심 개념 설명
- 클래스(Class): 객체의 설계도입니다. 객체가 가져야 할 속성과 행동을 정의합니다.
- 객체(Object): 클래스에서 정의한 속성과 행동을 가진 실체입니다.
- 비유: 클래스는 집을 짓기 위한 설계도와 같습니다. 집의 구조와 기능을 미리 정의합니다.
- 비유: 객체는 설계도를 바탕으로 실제로 지어진 집입니다. 실제로 존재하는 것이라 할 수 있습니다.
| 용어 | 정의 |
|---|---|
| 클래스 | 객체의 설계도 |
| 객체 | 클래스에서 만들어진 실체 |
3. 기본 코드 예제
class Car { // Car라는 클래스를 정의합니다.
String color; // 색상을 나타내는 속성
int speed; // 속도를 나타내는 속성
void accelerate() { // 가속하는 행동을 정의합니다.
speed += 10; // 속도를 10 증가시킵니다.
}
void displayInfo() { // 자동차 정보를 출력하는 행동을 정의합니다.
System.out.println("색상: " + color + ", 속도: " + speed);
}
}
public class Main {
public static void main(String[] args) {
Car myCar = new Car(); // Car의 객체를 생성합니다.
myCar.color = "빨강"; // 색상을 빨강으로 설정합니다.
myCar.speed = 0; // 초기 속도를 0으로 설정합니다.
myCar.accelerate(); // 가속 메서드를 호출합니다.
myCar.displayInfo(); // 자동차 정보를 출력합니다.
}
}
실행 결과:
색상: 빨강, 속도: 10
코드 한 줄씩 동작 설명
class Car { ... }: Car라는 클래스를 정의합니다.String color;: 색상을 나타내는 속성을 선언합니다.int speed;: 속도를 나타내는 속성을 선언합니다.void accelerate() { ... }: 가속하는 메서드를 정의합니다.speed += 10;: 가속할 때 속도를 10 증가시킵니다.void displayInfo() { ... }: 자동차 정보를 출력하는 메서드를 정의합니다.System.out.println(...): 색상과 속도를 출력합니다.Car myCar = new Car();: Car 클래스의 객체를 생성합니다.myCar.color = "빨강";: myCar 객체의 색상을 빨강으로 설정합니다.myCar.speed = 0;: myCar 객체의 초기 속도를 0으로 설정합니다.myCar.accelerate();: 가속 메서드를 호출하여 속도를 증가시킵니다.myCar.displayInfo();: 자동차의 현재 정보를 출력합니다.- 쇼핑몰에서 장바구니 구현하기
- 학생 관리 시스템
- 클래스 이름과 파일 이름 불일치
- 메서드 접근 제어자 생략
- 클래스는 객체의 설계도이며, 객체는 클래스의 실체입니다.
- 객체 지향 프로그래밍은 코드의 재사용성과 관리 용이성을 높여줍니다.
- 클래스를 정의하고 객체를 생성하는 기본 문법을 이해해야 합니다.
- 상속(Inheritance)
- 인터페이스(Interface)
- 다형성(Polymorphism)
4. 실전 활용 예제
class ShoppingCart {
private List<String> items; // 장바구니에 담긴 상품 목록
public ShoppingCart() {
items = new ArrayList<>(); // 상품 목록 초기화
}
public void addItem(String item) {
items.add(item); // 상품을 장바구니에 추가
}
public void showItems() {
System.out.println("장바구니에 담긴 상품: " + items);
}
}
public class Main {
public static void main(String[] args) {
ShoppingCart cart = new ShoppingCart(); // 장바구니 객체 생성
cart.addItem("사과"); // 사과 추가
cart.addItem("바나나"); // 바나나 추가
cart.showItems(); // 장바구니 내용 출력
}
}
상황 설명: 사용자가 쇼핑몰에서 상품을 장바구니에 담을 때, ShoppingCart 클래스를 사용하여 상품 목록을 관리합니다.
class Student {
String name; // 학생 이름
int id; // 학생 ID
void displayInfo() {
System.out.println("이름: " + name + ", ID: " + id);
}
}
public class Main {
public static void main(String[] args) {
Student student1 = new Student(); // 학생 객체 생성
student1.name = "홍길동"; // 이름 설정
student1.id = 1; // ID 설정
student1.displayInfo(); // 학생 정보 출력
}
}
상황 설명: 학교에서 학생 정보를 관리할 때 Student 클래스를 사용하여 각각의 학생 정보를 저장하고 출력합니다.
5. 흔한 실수와 주의사항
- 잘못된 코드:
class myClass { ... }
- 올바른 코드:
class MyClass { ... }
- 주의사항: Java에서는 클래스 이름과 파일 이름이 동일해야 합니다.
- 잘못된 코드:
void myMethod() { ... }
- 올바른 코드:
public void myMethod() { ... }
- 주의사항: 메서드의 접근 제어자를 명시하지 않으면 기본 접근 제어자(package-private)가 적용됩니다.
6. 정리
다음에 학습하면 좋은 주제: