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(); // "플레이어를 공격한다."
}
}