객체 지향의 4가지 특징
1. 캡슐화(Encapsulation)
public class BankAccount {
private double balance; // 계좌 잔액
// 입금 메서드
public void deposit(double amount){
this.balance += amount;
}
// 출금 메서드
public void withdraw(double amount){
if(amount <= this.balance){
this.balance -= amount;
} else {
System.out.println("잔액이 부족합니다.");
}
}
// 잔액 조회 메서드
public double getBalance(){
return this.balance;
}
}
: 캡슐화란 데이터와 메서드를 하나로 묶어서, 외부에서의 접근을 제어하는 것을 의미합니다. 캡슐화는 객체의 내부 구현을 외부에서 직접 접근하지 못하도록 하고, 오직 정해진 인터페이스를 통해서만 객체와 상호작용 할 수 있도록 합니다.
: 위 코드에서 객체 내부 구현 사항인 balance 멤버 변수가 private으로 선언되었습니다. 따라서 외부에서는 직접적으로 balance 변수에 접근할 수 없습니다.
: 대신 public으로 선언된 deposit(), withdraw(), getBalance() 메서드를 통해 외부 인터페이스가 제공되고, 입금, 출금, 잔액 조회 등의 기능을 수행할 수 있습니다.
: 이것이 객체 내부 구현이 외부에서 숨겨져 있으며, 대신 외부 인터페이스를 통해서만 상호작용이 가능하도록 만들어진 캡슐화의 개념입니다. 캡슐화를 통해 객체의 내부 구현을 감추고, 외부에서의 오동작을 방지할 수 있습니다.
2. 상속(Inheritance)
: 부모 클래스의 특성을 자식 클래스가 물려받는 것을 의미합니다. 이를 통해 코드의 재사용성을 높이고, 유지보수성을 향상 시킬 수 있습니다.
3. 다형성(Polymorphism)
: 하나의 객체나 메서드가 다양한 형태를 가질 수 있는 것을 의미합니다. 대표적으로 오버로딩, 오버라이딩이 있습니다. 이를 통해 객체 지향의 핵심인 유연성과 확장성을 구현할 수 있습니다.
4. 추상화(Abstraction)
: 복잡한 시스템이나 개념을 단순하게 표현하는 것을 말합니다. 즉, 객체 지향 프로그래밍에서 추상화는 객체의 공통적인 특징을 추출하여 이를 하나의 추상적인 개념으로 표현하는 과정을 말합니다.
: 예를 들어 자동차, 버스, 트럭 등의 다양한 이동수단이 있을 때, 이들의 공통점인 엔진, 바퀴, 핸들 등을 추출한 후 이를 하나의 클래스로 정의할 수 있습니다.
: 추상화는 객체 지향 프로그래밍의 핵심 개념 중 하나로, 추상 클래스와 인터페이스를 통해 구현됩니다.
'java(자바)' 카테고리의 다른 글
[java(자바)] 오버로딩과 오버라이딩의 차이 _디버깅의 눈물 (0) | 2023.03.20 |
---|---|
[java(자바)] 클래스, 객체, 인스턴스란? _디버깅의 눈물 (0) | 2023.03.19 |
[java(자바)] 자바의 메모리 영역 5가지 _디버깅의 눈물 (0) | 2023.03.18 |
[java(자바)] 자바의 컴파일 과정 _디버깅의 눈물 (0) | 2023.03.17 |
[java(자바)] 가비지 컬렉션(Garbage Collection)이란? _디버깅의 눈물 (0) | 2023.03.17 |