Programming/JAVA

📌 객체지향 언어란? 클래스와 객체, 그리고 자바의 핵심 개념 총정리

추천캐릭터 2022. 10. 27. 20:31
728x90
반응형

🧭 목차

  1. 객체지향 언어란?
  2. 클래스, 객체, 인스턴스의 차이
  3. 객체지향의 3대 특징
  4. 객체지향의 장단점
  5. 대표적인 객체지향 언어

1. 객체지향 언어란?

**객체지향 언어(Object-Oriented Language)**는
현실 세계의 **모든 객체(자동차, 사람, 문 등)**가
자신만의 속성과 기능을 가지고 상호작용한다는 개념을
프로그래밍에 적용한 언어입니다.

  • 객체 간의 관계와 역할에 중점을 둠
  • 각 객체는 고유한 속성과 기능을 가지고 있음
  • 이 객체들이 협력하며 동작하는 구조로 소프트웨어를 구성

2. 클래스(Class), 객체(Object), 인스턴스(Instance)

구분설명
객체 프로그램에서 구현하고자 하는 대상 (예: 자동차, 회원, 게시물 등)
클래스 객체의 속성과 기능을 정의한 설계도
인스턴스 클래스를 기반으로 실제 메모리에 생성된 객체 (현실 세계의 실체)
 
 
class Car {
    String color;
    void drive() {
        System.out.println("주행 중");
    }
}

Car myCar = new Car();  // ← 이게 바로 인스턴스!

3. 객체지향 언어의 3대 특징

🔒 캡슐화 (Encapsulation)

  • 객체의 내부 구조를 외부에 은닉
  • 필요한 정보만 외부에 public으로 노출
  • 자바에서는 private, protected, public 등 접근 제어자로 구현

➡ 예:

private int age;  
public void setAge(int a) { age = a; }

👪 상속 (Inheritance)

  • 자식 클래스가 부모 클래스의 속성과 기능을 물려받는 것
  • 코드의 재사용성 높이고, 유지보수 편리
class Animal { void eat() { } }
class Dog extends Animal { void bark() { } }
  • 부모 클래스 → 슈퍼 클래스(Super Class)
  • 자식 클래스 → 서브 클래스(Sub Class)

🔄 다형성 (Polymorphism)

  • 하나의 메소드나 객체가 다양한 방식으로 동작

▪ 오버라이딩 (Overriding)

  • 부모 메소드를 자식 클래스에서 재정의
  • 메소드명, 매개변수, 반환형 동일
@Override
public void run() {
    System.out.println("자식 클래스에서 실행");
}

▪ 오버로딩 (Overloading)

  • 같은 이름의 메소드지만 매개변수 다름
@Override
public void run() {
    System.out.println("자식 클래스에서 실행");
}

4. 객체지향 프로그래밍의 장점과 단점

✅ 장점

  • 재사용성: 상속으로 기존 코드 활용
  • 생산성 향상: 독립적인 객체 개발
  • 자연스러운 모델링: 현실 세계와 유사
  • 유지보수 우수: 캡슐화로 영향 최소화

❌ 단점

  • 설계 복잡: 개념 파악 및 초기 설계 시간 소요
  • 실행 속도 저하: 절차형 언어보다 느릴 수 있음
  • 코딩 난이도: 복잡한 구조로 인한 학습 장벽

5. 대표적인 객체지향 언어

언어특징
Java 가장 널리 쓰이는 객체지향 언어, 플랫폼 독립적
C++ C 언어의 확장, 다중 상속 지원
C# 닷넷(.NET) 기반 객체지향 언어
Python 인터프리터 기반, 동적 타이핑, 강력한 객체지향 지원
 

 

728x90
반응형