CS

객체지향 프로그래밍의 특징

Twisted 2025. 3. 4. 13:44

객체지향 프로그래밍이란?

객체지향 프로그래밍의 핵심 개념은 객체(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