반응형
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Visual Studio Code
- 테스트자동화
- CSS
- js
- json
- 문자열
- HashMap
- 자바
- 자바문법
- Java
- list
- html
- 인텔리제이
- junit
- Eclipse
- Array
- 정규식
- junit5
- string
- vscode
- java테스트
- 자바스크립트
- input
- math
- 배열
- 단위테스트
- ArrayList
- IntelliJ
- javascript
- 이클립스
Archives
- Today
- Total
어제 오늘 내일
[Java] 객체지향 4대 원칙 정리 (상속, 추상화, 캡슐화, 다형성) 본문
Java를 비롯한 객체지향 프로그래밍(OOP)에서는 4대 핵심 원칙이 존재합니다.
바로 상속(Inheritance), 추상화(Abstraction), 캡슐화(Encapsulation), 다형성(Polymorphism)입니다.
이 네 가지가 객체지향의 구조와 설계를 이루는 기본 뼈대이며, 서로 유기적으로 연결되어 동작합니다.
1. 상속(Inheritance)
상속은 기존 클래스(부모)의 속성과 기능을 새로운 클래스(자식)가 물려받는 것입니다.
특징
- 부모 클래스의 필드와 메서드 재사용
- 코드 중복 감소
- 자식 클래스에서 기능 확장 가능
예제
class Animal {
void eat() {
System.out.println("먹습니다");
}
}
class Dog extends Animal {
void bark() {
System.out.println("멍멍");
}
}
설명
- Dog는 Animal이 가진 eat()을 그대로 사용
- bark()는 Dog만의 기능
2. 추상화(Abstraction)
추상화는 불필요한 구현은 숨기고, 핵심 개념만 드러내는 것입니다.
구체적인 동작은 자식 클래스에서 정의하도록 하여 구조를 단순화합니다.
특징
- 공통 기능을 추출해 상위 구조 정의
- 세부 구현은 하위 클래스에 위임
- 복잡도 감소 및 설계 명확화
예제 (추상 클래스)
abstract class Animal {
abstract void sound(); // 세부 구현 없음
}
예제 (인터페이스)
interface Printable {
void print();
}
설명
- "어떻게"가 아닌 "무엇을 해야 하는지"를 정의
3. 캡슐화(Encapsulation)
캡슐화는 객체의 내부 데이터(필드)를 숨기고, 메서드를 통해서만 접근하게 하는 것입니다.
데이터 보호와 일관성 유지에 핵심적인 역할을 합니다.
특징
- 정보 은닉(private 변수)
- getter/setter로 안전한 접근 제공
- 객체 상태 보호
예제
class Person {
private int age;
public int getAge() { return age; }
public void setAge(int age) {
if (age >= 0) this.age = age;
}
}
설명
- 외부에서 age를 직접 변경할 수 없음
- setter에서 유효성 검사가 가능
4. 다형성(Polymorphism)
다형성은 같은 타입(부모)으로 다양한 객체(자식)를 처리할 수 있는 능력입니다.
오버라이딩된 메서드는 실제 객체 타입을 기준으로 실행됩니다.
특징
- 코드 유연성 증가
- 부모 타입으로 여러 자식 객체 처리 가능
- 오버라이딩 기반 동작
예제
class Animal {
void sound() { System.out.println("동물 소리"); }
}
class Dog extends Animal {
@Override
void sound() { System.out.println("멍멍"); }
}
class Cat extends Animal {
@Override
void sound() { System.out.println("야옹"); }
}
Animal a = new Dog();
a.sound(); // 멍멍
설명
- 변수는 Animal 타입이지만, 실행되는 메서드는 실제 객체(Dog) 기준
5. 4대 원칙 요약 표
| 원칙 | 핵심 개념 | 효과 |
| 상속 | 부모 기능을 자식이 물려받음 | 코드 재사용, 확장성 |
| 추상화 | 공통 규칙 정의, 구현은 자식 | 복잡도 감소, 구조 명확 |
| 캡슐화 | 내부 데이터 보호, 접근 제한 | 안정성, 유지보수성 |
| 다형성 | 한 타입으로 여러 객체 다룸 | 유연성, 확장성 |
6. 4대 원칙은 어떻게 연결될까?
- 추상화로 규칙(인터페이스/추상 메서드)을 만들고
- 상속으로 구조를 확장하며
- 다형성으로 하나의 타입으로 다양한 행동을 수행하고
- 캡슐화로 데이터와 그 방식을 보호합니다.
즉, 네 가지 원칙은 각각 독립적이지만 함께 사용할 때 OOP의 강력함이 드러납니다.
반응형
'IT > Java' 카테고리의 다른 글
| [Java] 메서드 오버라이딩 규칙 정리 (0) | 2025.12.28 |
|---|---|
| [Java] 합성(Composition) vs 상속(Inheritance) (0) | 2025.12.28 |
| [Java] 캡슐화(Encapsulation)란? (0) | 2025.12.27 |
| [Java] 다형성(Polymorphism) 이해하기 (0) | 2025.12.26 |
| [Java] this 키워드 사용법 (0) | 2025.12.26 |
Comments
