📌 오늘 학습한 주제
- Java 열거형(
enum)의 정의 및 Switch 표현식과 동등 비교(==) 활용 (EnumApp.java)
- 추상 클래스(
abstract class)와 인터페이스(interface)의 다중 구현 구조 (Animal.java, Flyer.java, SuperMan.java)
- 함수형 인터페이스(
@FunctionalInterface) 개념 및 표준 함수형 인터페이스 분류 (InspireFunction.java)
💡 오늘 배운 것 — 나만의 언어로
① 오늘의 목표
- 열거형(Enum)을 통한 안전한 상수 관리 기법을 익히고, 추상 클래스와 인터페이스를 결합한 객체지향 설계 및 람다식을 위한 함수형 인터페이스의 기본 개념 정립하기
② 학습할 내용
- 열거형(Enum) 활용 (
EnumApp.java): 고유 상수를 정의하는 Flag Enum을 활용해 switch-case 분기 및 == 연산자로 타입 안정성 높은 조건 처리를 구현했다.
- 추상화 및 인터페이스 다중 구현 (
Animal.java, Flyer.java, SuperMan.java): 일반 메소드를 가질 수 있는 추상 클래스 Animal을 상속(extends)받고, 비행 동작을 규격화한 Flyer 인터페이스를 구현(implements)하는 다중 구조를 실습했다.
- 함수형 인터페이스 (
InspireFunction.java): 람다식 작성을 위해 단 하나의 추상 메소드만 갖는 @FunctionalInterface의 정의와 표준 함수형 인터페이스(Supplier, Consumer, Function, Predicate)의 분류 및 특징을 파악했다.
💻 오늘 핵심 코드
1. Enum 활용 및 조건 분기 (EnumApp.java)
import features.oop.util.Flag;
public class EnumApp {
public static void main(String[] args) {
Flag flag = Flag.STUDENT;
System.out.println(flag);
System.out.println(flag.getFlag());
switch (flag) {
case STUDENT -> System.out.println("학생");
case TEACHER -> System.out.println("강사");
case MANAGER -> System.out.println("매니저");
}
if (flag == Flag.STUDENT) {
System.out.println("학생");
}
}
}
2. 추상 클래스 상속과 인터페이스 구현 (SuperMan.java)
package features.oop.abstraction;
public class SuperMan extends Animal implements Flyer {
@Override
public void fly() {
System.out.println("하늘을 날아갑니다.");
}
@Override
public void takeOff() {
System.out.println("이륙합니다.");
}
@Override
public void landing() {
System.out.println("착륙합니다.");
}
}
3. 함수형 인터페이스 정의 (InspireFunction.java)
package features.lambda;
@FunctionalInterface
public interface InspireFunction {
public int max(int x, int y);
}
🛠️ 실습 / 결과물 & 참고 자료
③ 실습 / 결과물
- 강의 실습코드:
EnumApp.java, Animal.java, Flyer.java, SuperMan.java, InspireFunction.java 연동을 통해 Enum 조건 처리, 인터페이스 표준 규격 구현, 함수형 인터페이스 설계를 완료함.
④ 참고 자료
- Oracle Java Documentation: Java Enums & Abstract Classes vs Interfaces
- Java Functional Interfaces: Java SE FunctionalInterface Specification
🔍 문제와 해결
- 막힌 부분: 여러 인터페이스와 상속 관계가 얽힐 때 단일 상속(
extends)의 한계와 인터페이스 다중 구현(implements)의 역할 분담 기준 점검.
- 해결 방법: 공통 속성/기본 구현은 추상 클래스(
Animal)로 정의하고, 특정 행위(날기 등)에 대한 표준 규격은 인터페이스(Flyer)로 분리하여 유연한 클래스 구조를 설계함.
🎯 다음에 할 일