📙 목차
🧡 학습 목표
- 추상화가 무엇인지 학습한다.
객체지향의 4가지 특징
- 캡슐화 - 데이터의 보호
- 상속 - 재사용성과 확장
- 추상화 - 데이터의 계층적 표현
- 다형성 - 객체지향의 꽃
1. 추상화
추상화란?
- 불필요한 정보를 제거하고 본질적인 특징만 남기는 것을 의미한다.
- 객체지향 프로그래밍에서는 추상화의 계층적 특징을 활용해서 유지보수성이 좋은 프로그램을 만들 수 있다.
- 계층구조를 자바의 특징(인터페이스 상속, 클래스 상속)을 통해 구현할 수 있다.
- 추상화의 특징은 다형성에서 활용된다.
2. 인터페이스 상속을 활용한 추상 계층 표현
고양이 → 동물 → 생명체
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();
}
}
3. 클래스 상속을 활용한 추상 계층 표현
고양이 → 동물 → 생명체
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();
}
}
4. 실습과제
스스로 주제를 정하고 인터페이스와 클래스를 활용하여 3단계 이상의 추상 계층을 구현해 보세요.
인터페이스
public interface Program {
void install();
}
public interface Game extends Program{
void play();
}
public class OnlineGame implements Game {
@Override
public void install() {
System.out.println("온라인 게임을 설치한다.");
}
@Override
public void play() {
System.out.println("온라인 게임 시작");
}
public void checkInternet() {
System.out.println("인터넷 연결 확인");
}
}
public class Main {
public static void main(String[] args) {
OnlineGame og = new OnlineGame();
og.install();
og.play();
og.checkInternet();
}
}
클래스
public class Program{
public void install() {
System.out.println("프로그램을 설치한다.");
}
}
public class Game extends Program {
@Override
public void install() {
System.out.println("게임을 설치한다.");
}
public void play() {
System.out.println("게임 시작");
}
}
public class OnlineGame extends Game {
public void checkInternet() {
System.out.println("인터넷 연결 확인");
}
}
public class Main {
public static void main(String[] args) {
OnlineGame og = new OnlineGame();
og.install();
og.play();
og.checkInternet();
}
}
'Java > 강의' 카테고리의 다른 글
[📙 Java 문법 종합반] 3-1. 예외(Exception)과 예외처리(try-catch) (0) | 2025.04.16 |
---|---|
[📙 Java 문법 종합반] 2-10. 객체지향 PART 4 - 다형성 (0) | 2025.04.15 |
[📙 Java 문법 종합반] 객체지향 PART 2 - 상속 (0) | 2025.04.15 |
[📙 Java 문법 종합반] 2-7. 객체지향 PART 1 - 캡슐화(접근제어자) (0) | 2025.04.15 |
[📙 Java 문법 종합반] 인터페이스 - 표준화의 시작 (0) | 2025.04.15 |