끄적모음

객체지향 PART 3 - 추상화

taehyon 2025. 4. 15. 20:24

추상화란 무엇일까?

  • 고양이 → 동물 → 생명체
  • 추상화란 불필요한 정보를 제거하고 본질적인 특징만 남기는 것을 의미합니다.
  • 객체지향 프로그래밍에서는 추상화의 계층적 특징을 활용해서 유지보수성이 좋은 프로그램을 만들 수 있습니다.
  • 이런 추상화 특징을 활용할 수 있다는 것이 객체지향의 3번째 특징입니다.
  • 우리는 계층구조를 자바의 특징(인터페이스 상속, 클래스 상속) 구현할 수 있습니다.
  • 추상화의 특징은 다형성에서 활용됩니다.

 

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

public interface LifeForm {
    void exist(); // ✅ 공통: 모든 생명체는 존재한다.
}
public interface Animal extends LifeForm {

    void makeSound(); //✅ 공통: 모든 동물은 소리를 냅니다.
}
public class Cat implements Animal {

    @Override
    public void exist() {
        System.out.println("고양이가 존재합니다.");

    }

    @Override
    public void makeSound() {
        System.out.println("야옹");
    }

    public void scratch() {
        System.out.println("스크래치");
    }
}
public class Main {

    public static void main(String[] args) {
        Cat cat = new Cat();
        cat.exist();
        cat.makeSound();
        cat.scratch();
    }
}

 

 

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

public class LifeForm {

    public void exist() {
        System.out.println("존재합니다2"); // ✅ 공통: 모든 객체는 존재한다.
    }
}
public class Animal extends LifeForm {

    public void makeSound() {
        System.out.println("소리를 냅니다2"); // ✅ 공통: 모든 생명체는 성장한다.
    }
}
public class Cat extends Animal {

    @Override
    public void makeSound() {
        System.out.println("야옹2");
    }

    public void scratch() {
        System.out.println("스크래치!");
    }
}
public class Main {

    public static void main(String[] args) {
        Cat cat = new Cat();
        cat.exist();
        cat.makeSound();
        cat.scratch();
    }
}

 

'끄적모음' 카테고리의 다른 글

개인과제 계산기 1  (0) 2025.04.16
객체지향 PART 4 - 다형성  (0) 2025.04.15
객체지향 PART 2 - 상속  (0) 2025.04.15
객체지향 PART 1 - 캡슐화(접근제어자)  (0) 2025.04.15
인터페이스 - 표준화의 시작  (0) 2025.04.15