목차

    ⏳ Time Log/1. One Day (Daily · TIL)

    [TIL] Day 12 — Java 다형성 + 추상클래스 + 인터페이스

    this.Serena 2026. 2. 19. 00:00

    [TIL] Day 12 — Java 다형성 + 추상클래스 + 인터페이스

    날짜: 2025-11-04
    기술 스택: Java OOP abstract interface Polymorphism
    부트캠프: 풀스택 개발자 부트캠프 3주차


    다형성 규칙

    1. 상위 클래스는 하위 클래스를 참조 가능 (업캐스팅)
    2. 접근 영역은 상위 클래스 영역으로 한정
    3. 오버라이딩된 메서드는 런타임에 실제 객체 타입의 구현 호출 (동적 바인딩)
    4. 하위 클래스는 상위 클래스 참조 불가. 단, 상위 타입으로 참조 중인 객체를 강제 형변환 시 가능

    추상 클래스

    abstract class Animal {
        void breathe() { System.out.println("호흡"); }
        abstract void sound(); // 구현 없음 — 하위 클래스에서 반드시 구현
    }
    class Dog extends Animal {
        @Override
        public void sound() { System.out.println("멍멍"); }
    }
    
    Animal dog = new Dog(); // 다형성
    dog.sound();            // 멍멍

    인터페이스

    interface Flyable   { void fly(); }
    interface Swimmable { void swim(); }
    
    class Duck implements Flyable, Swimmable { // 다중 구현
        @Override public void fly()  { System.out.println("날다"); }
        @Override public void swim() { System.out.println("헤엄치다"); }
    }

    abstract class vs interface

    구분 추상 클래스 인터페이스
    키워드 extends implements
    다중 상속 불가 가능
    필드 일반 필드 가능 public static final 상수만
    메서드 일반·추상 메서드 모두 가능 추상 메서드 + default/static 메서드 (Java 8+)
    관계 IS-A CAN-DO (능력 보유)

    트러블슈팅

    • 추상 클래스 new Animal() 시도 시 컴파일 오류 — 하위 클래스로 생성
    • implements 한 클래스에서 미구현 메서드 있으면 컴파일 오류 — 모두 구현

    더 알아볼 것

    • default 인터페이스 메서드 활용 사례
    • 주요 인터페이스: Runnable, Comparable, Iterable
    • 함수형 인터페이스 + 람다 기초
    • CSS animation, @keyframes 실습