1️⃣ 패키지(Package)
- 패키지란? 관련 있는 클래스들을 논리적으로 그룹화하는 개념
- 이점: 코드 관리가 편리하고, 클래스 이름 충돌 방지
- 사용법:
package com.myapp.models; // 패키지 선언
public class User {
private String name;
public User(String name) { this.name = name; }
}
2️⃣ 객체지향 프로그래밍(OOP) 개념
- OOP(Object-Oriented Programming) = "객체를 중심으로 프로그램을 설계하는 방식"
- 이점: 재사용성, 유지보수성, 확장성이 뛰어남
- 실생활 예제:
- 자동차 = 객체
- 속성(변수) = 브랜드, 색상, 속도
- 행동(메서드) = 출발, 정지, 가속
3️⃣ OOP의 4대 원칙
1. 캡슐화(Encapsulation)
- 데이터 보호 및 외부 접근 제한
- 예제: 은행 계좌 (private balance; 사용)
class BankAccount {
private int balance;
public void deposit(int amount) { balance += amount; }
public int getBalance() { return balance; }
}
2. 상속(Inheritance)
- 기존 클래스를 확장하여 새로운 클래스를 생성
- 예제: Animal → Dog, Cat (부모 클래스의 기능을 자식이 상속)
class Animal {
void eat() { System.out.println("먹고 있습니다."); }
}
class Dog extends Animal {
void bark() { System.out.println("멍멍!"); }
}
3. 다형성(Polymorphism)
- 같은 메서드라도 여러 형태로 동작 가능
- 예제: MusicPlayer → MP3Player, CDPlayer (각기 다른 재생 방식)
class MusicPlayer { void play() { System.out.println("음악 재생"); } }
class MP3Player extends MusicPlayer {
void play() { System.out.println("MP3 재생"); }
}
4. 추상화(Abstraction)
- 필요한 기능만 제공하고, 세부 구현은 감춤
- 예제: 자동차 운전 (운전자는 내부 엔진 작동 원리를 몰라도 됨)
abstract class Vehicle {
abstract void move();
}
class Car extends Vehicle {
void move() { System.out.println("도로를 달립니다."); }
}
4️⃣ 클래스(Class)와 객체(Object)의 차이
- 클래스(Class) = 객체를 생성하는 설계도
- 객체(Object) = 클래스의 실제 인스턴스
- 인스턴스(Instance) = 특정 클래스로부터 생성된 개별 객체
- 예제: Cookie 클래스와 chocolateCookie 인스턴스
class Cookie { String flavor; }
Cookie chocolateCookie = new Cookie(); // Cookie 클래스의 인스턴스