SMALL
📚 5강: 객체 지향 프로그래밍 (OOP) - 클래스와 객체
🚀 1. 객체지향 프로그래밍(OOP)이란?
- **객체 지향 프로그래밍(Object-Oriented Programming, OOP)**은 현실 세계를 프로그래밍에 적용하는 방법론입니다.
- 프로그램을 객체(Object) 단위로 나누고, 이 객체들이 상호작용하여 문제를 해결합니다.
📌 1.1 객체지향 프로그래밍의 4가지 핵심 요소
- 캡슐화(Encapsulation): 데이터와 메서드를 하나로 묶고 외부로부터 숨김.
- 상속(Inheritance): 기존 클래스를 재사용하여 새로운 클래스를 만듦.
- 다형성(Polymorphism): 같은 메서드가 다른 객체에서 다른 방식으로 동작.
- 추상화(Abstraction): 복잡한 시스템에서 핵심만 표현.
🚀 2. 클래스(Class)와 객체(Object)
📌 2.1 클래스란?
- **클래스(Class)**는 객체를 생성하기 위한 설계도입니다.
- 속성(멤버 변수)과 동작(메서드)으로 구성됩니다.
📌 2.2 객체란?
- **객체(Object)**는 클래스를 기반으로 생성된 실체입니다.
- **클래스의 인스턴스(Instance)**라고도 합니다.
📌 2.3 클래스 선언 및 객체 생성
✅ 클래스 선언
public class Car {
// 멤버 변수 (속성)
String brand;
String color;
int speed;
// 메서드 (동작)
void drive() {
System.out.println(brand + "가(이) 달립니다.");
}
void stop() {
System.out.println(brand + "가(이) 멈춥니다.");
}
}
✅ 객체 생성 및 사용
public class Main {
public static void main(String[] args) {
// 객체 생성
Car myCar = new Car();
// 멤버 변수 값 할당
myCar.brand = "Hyundai";
myCar.color = "Red";
myCar.speed = 100;
// 메서드 호출
myCar.drive();
myCar.stop();
}
}
📌 출력 결과:
Hyundai가(이) 달립니다.
Hyundai가(이) 멈춥니다.
🚀 3. 생성자(Constructor)
📌 3.1 생성자란?
- 객체를 생성할 때 자동으로 호출되는 메서드입니다.
- 클래스 이름과 동일해야 하며 반환 타입이 없습니다.
📌 3.2 생성자 선언
✅ 기본 생성자 (Default Constructor)
public class Car {
String brand;
String color;
// 기본 생성자
public Car() {
System.out.println("Car 객체가 생성되었습니다.");
}
}
✅ 매개변수 생성자 (Parameterized Constructor)
public Car(String brand, String color) {
this.brand = brand;
this.color = color;
}
✅ 생성자 사용 예시
public class Main {
public static void main(String[] args) {
Car car1 = new Car(); // 기본 생성자 호출
Car car2 = new Car("BMW", "Black"); // 매개변수 생성자 호출
System.out.println(car2.brand + ", " + car2.color);
}
}
📌 출력 결과:
Car 객체가 생성되었습니다.
BMW, Black
🚀 4. this 키워드
- this는 현재 객체 자신을 참조하는 키워드입니다.
- 주로 멤버 변수와 매개변수 이름이 충돌할 때 사용됩니다.
✅ this 예제
public class Car {
String brand;
public Car(String brand) {
this.brand = brand; // this로 멤버 변수와 매개변수 구분
}
void printBrand() {
System.out.println("브랜드: " + this.brand);
}
}
🚀 5. 메서드 오버로딩 (Method Overloading)
- 같은 이름의 메서드를 매개변수의 타입, 개수, 순서를 다르게 하여 여러 개 정의하는 것.
✅ 메서드 오버로딩 예제
public class Calculator {
int add(int a, int b) {
return a + b;
}
double add(double a, double b) {
return a + b;
}
}
public class Main {
public static void main(String[] args) {
Calculator calc = new Calculator();
System.out.println(calc.add(5, 10)); // 정수 더하기
System.out.println(calc.add(5.5, 10.5)); // 실수 더하기
}
}
📌 출력 결과:
15
16.0
🚀 6. 접근 제어자 (Access Modifiers)
- 클래스, 변수, 메서드의 접근 범위를 제어합니다.
제어자설명같은 클래스같은 패키지상속 클래스다른 패키지
public | 모두 접근 가능 | ✅ | ✅ | ✅ | ✅ |
protected | 상속 및 같은 패키지 접근 가능 | ✅ | ✅ | ✅ | ❌ |
default | 같은 패키지 접근 가능 | ✅ | ✅ | ❌ | ❌ |
private | 같은 클래스에서만 접근 가능 | ✅ | ❌ | ❌ | ❌ |
🚀 7. 실습 과제
✅ 1. 클래스와 객체 연습
- Person 클래스를 만들고 이름, 나이 멤버 변수를 선언하세요.
- 생성자를 통해 이름과 나이를 초기화하세요.
- introduce() 메서드를 만들어 정보를 출력하세요.
✅ 2. 생성자와 this 사용
- Book 클래스를 만들고 제목과 저자를 생성자를 통해 초기화하세요.
- printInfo() 메서드로 책 정보를 출력하세요.
🎯 학습 목표
- 클래스와 객체의 개념을 이해하고 사용할 수 있다.
- 생성자와 this 키워드를 활용할 수 있다.
- 메서드 오버로딩을 통해 다양한 메서드를 정의할 수 있다.
- 접근 제어자를 이해하고 적절하게 사용할 수 있다.
✅ 다음 강의 예고: 6강 - 객체 지향 프로그래밍 (OOP) - 상속과 오버라이딩
다음 강의에서는 **상속(Inheritance)**과 **오버라이딩(Overriding)**에 대해 학습합니다. 😊
LIST
'자바 (JAVA)' 카테고리의 다른 글
📚 JAVA 7강: 객체 지향 프로그래밍 (OOP) - 추상 클래스와 인터페이스 (0) | 2025.01.03 |
---|---|
📚 JAVA 6강: 객체 지향 프로그래밍 (OOP) - 상속과 오버라이딩 (0) | 2025.01.03 |
📚 JAVA 4강: 배열과 문자열 (1) | 2025.01.03 |
🚀 이클립스(Eclipse) 설치 과정 (0) | 2025.01.02 |
📚 JAVA 3강: 연산자와 제어문 (0) | 2025.01.02 |