추상화란 무엇일까?
- 고양이 → 동물 → 생명체
- 추상화란 불필요한 정보를 제거하고 본질적인 특징만 남기는 것을 의미합니다.
- 객체지향 프로그래밍에서는 추상화의 계층적 특징을 활용해서 유지보수성이 좋은 프로그램을 만들 수 있습니다.
- 이런 추상화 특징을 활용할 수 있다는 것이 객체지향의 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 |