Programming/JAVA
📌 객체지향 언어란? 클래스와 객체, 그리고 자바의 핵심 개념 총정리
추천캐릭터
2022. 10. 27. 20:31
728x90
반응형
🧭 목차
- 객체지향 언어란?
- 클래스, 객체, 인스턴스의 차이
- 객체지향의 3대 특징
- 객체지향의 장단점
- 대표적인 객체지향 언어
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
반응형