객체지향 프로그래밍이란?
객체지향 프로그래밍의 핵심 개념은 객체(Object)이다. 객체는 데이터와 해당 데이터를 조작하는 메서드를 포함하는 독립적인 단위로 볼 수 있다. 이를 통해 프로그램을 구조화하고 확장성을 높일 수 있다.
객체지향 프로그래밍의 특징
1) 캡슐화 (Encapsulation)
- 데이터를 보호하고, 외부에서 접근할 수 없도록 하는 원칙
- private, protected 키워드를 사용해서 데이터를 보호 가능
- 외부에는 인터페이스(메서드)만 노출하여 필요한 데이터만 접근할 수 있도록 제어할 수 있다.
class User {
private String name;
private int age;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
}
2) 상속 (Inheritance)
- 기존 클래스(부모)의 기능을 재사용하여 새로운 클래스를 만들 수 있음
- 코드 중복을 줄이고 유지보수를 쉽게 함
class Animal {
void makeSound() {
System.out.println("소리를 냅니다");
}
}
class Dog extends Animal {
@Override
void makeSound() {
System.out.println("멍멍");
}
}
3) 다형성 (Polymorphism)
- 하나의 인터페이스나 부모 클래스를 통해 여러 형태의 객체를 다룰 수 있음
- 코드 확장성과 유지보수성을 높이는데 기여함
interface Animal {
void makeSound();
}
class Cat implements Animal {
public void makeSound() {
System.out.println("야옹");
}
}
class Dog implements Animal {
public void makeSound() {
System.out.println("멍멍");
}
}
public class Main {
public static void main(String[] args) {
Animal myPet = new Dog();
myPet.makeSound(); // "멍멍" 출력
}
}
4) 추상화 (Abstraction)
- 불필요한 부분을 숨기고, 중요한 부분만 노출하여 설계의 복잡성을 줄임
- 인터페이스 또는 추상 클래스를 통해 구현
abstract class Vehicle {
abstract void move();
}
class Car extends Vehicle {
void move() {
System.out.println("자동차가 달립니다");
}
}
'CS' 카테고리의 다른 글
CheckedException, UncheckedException (0) | 2025.03.04 |
---|---|
접근 제한자 (Access Modifier) (0) | 2025.03.04 |
객체 지향의 설계원칙 (OOP) (0) | 2025.03.04 |
직렬화와 역직렬화 (2) | 2025.03.04 |
오버로딩(Overloading)과 오버라이딩(Overriding) (0) | 2025.02.25 |