본문 바로가기

java(자바)

[java(자바)] 객체 지향의 주요 특징-캡슐화, 상속, 다형성, 추상화 _디버깅의 눈물

객체 지향의 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)

: 복잡한 시스템이나 개념을 단순하게 표현하는 것을 말합니다. 즉, 객체 지향 프로그래밍에서 추상화는 객체의 공통적인 특징을 추출하여 이를 하나의 추상적인 개념으로 표현하는 과정을 말합니다.

: 예를 들어 자동차, 버스, 트럭 등의 다양한 이동수단이 있을 때, 이들의 공통점인 엔진, 바퀴, 핸들 등을 추출한 후 이를 하나의 클래스로 정의할 수 있습니다.

: 추상화는 객체 지향 프로그래밍의 핵심 개념 중 하나로, 추상 클래스와 인터페이스를 통해 구현됩니다.

 

*추상 클래스와 인터페이스란?