목차

    불편함을 코드로 지웁니다.

    개발 공부 노트, 개발 도구와 문제를 해결한 과정, AI 프롬프트와 Obsidian 활용법을 정리합니다.

      ⏳ Time Log/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 실습