본문 바로가기
Java/객체 지향

객체 지향 원칙 3 - 추상화

by 정구정구 2026. 6. 4.

추상화

  • 불필요한 정보를 제거하고 본질적인 특징만 남기는 것
  • 계층적인 특징을 활용해서 유지 보수성이 좋아짐

 

인터페이스 상속을 활용한 추상 계층 표현

public interface GameObject // 오브젝트
{
    void exist(); // 구현 여부
}
public interface movable implements GameObject // 움직일 수 있는 오브젝트
{
    void move(); // 움직임 정보
}
public class Monster implements movable 
{
    @Override
    public void exist() 
    {
        System.out.println("몬스터가 존재한다.");
    }

    @Override
    public void move() 
    {
        System.out.println("몬스터가 움직인다.");
    }

    public void attack() 
    {
        System.out.println("몬스터가 공격한다");
    }
}
public class Main 
{
    public static void main(String[] args) 
    {
        Monster monster = new Monster();
        monster.exist(); // "몬스터가 존재한다."
        monster.move(); // "몬스터가 움직인다."
        monster.attack(); // "몬스터가 공격한다."
    }
}

 

 

 

클래스 상속을 활용한 추상 계층 표현

public class GameObject 
{
    public void exist() 
    {
        System.out.println("존재한다.");
    }
}
public class Movable extends GameObject 
{
    public void move() 
    {
        System.out.println("왼쪽으로 간다.");
    }
}
public class Monster extends Movable 
{
    @Override
    public void move() 
    {
        System.out.println("오른쪽으로 간다."); // 메서드 재정의
    }

    public void attack()
    {
        System.out.println("플레이어를 공격한다.");
    }
}
public class Main 
{
    public static void main(String[] args) 
    {
        Monster monster = new Monster();
        monster.exist(); // "존재한다."
        monster.move(); // "오른쪽으로 간다."
        monster.attack(); // "플레이어를 공격한다."
    }
}