[Java] 다형성 & 인터페이스 개념, 특징 정리

신효경·2025년 8월 5일
0

다형성(Polymorphism)이란?

다형성(Polymorphism)은 객체지향 프로그래밍(OOP)의 가장 핵심적인 개념 중 하나이다
"여러 가지 형태를 가질 수 있는 능력"을 의미하며, 코드의 유연성과 확장성을 높여준다

  • 다형성은 같은 타입의 변수가 다양한 형태의 객체를 참조할 수 있는 성질을 말한다
  • 즉, 하나의 인터페이스(또는 부모 클래스)가 여러 구현체(또는 자식 클래스)를 참조할 수 있는 구조이다

📍다형성의 핵심 조건 및 장점

  1. 상속(extends / implements) 관계
  2. 부모 타입의 참조 변수로 자식 객체를 참조
  3. 메서드 오버라이딩이 활용됨
장점설명
코드 재사용성공통된 타입으로 묶어 코드 중복을 줄일 수 있다
유지보수 용이새로운 클래스를 추가해도 기존 코드를 거의 수정하지 않아도 된다
확장성 증가다양한 객체를 유연하게 교체하거나 확장할 수 있다
인터페이스 기반 설계 가능기능 중심의 설계가 가능하며, 유연하고 느슨한 결합 구조를 만든다

📍정적 다형성 vs 동적 다형성

구분설명예시
정적 다형성 (Static)컴파일 시점에 결정되는 다형성, 대표적으로 오버로딩print(int a) vs print(String s)
동적 다형성 (Dynamic)런타임 시점에 결정되는 다형성, 대표적으로 오버라이딩부모 타입으로 자식 객체를 참조할 때 실제 호출은 자식 메서드가 실행됨

💻 구현 예시

interface 'ISmartPhone.java'

  • name은 일반 변수같지만 interface 내에 정의된 변수이기 때문에 (static final 없이도) 상수처리된다
    • 따라서 반드시 초기화되어 한다
    • 이때 static 블록으로 초기화 불가능하다
  • 메서드는 구현되는 클래스의 설계도 역할을 한다
    • 상속받는 객체는 반드시 구현해야한다
    • 접근제한은 상속 받는 객체가 더 크거나 같아야 한다 (보통은 같게 구현)

interface 구현한 'IPhone.java'

interface 구현한 'SamsungPhone.java'

main 'SmartPhoneMain.java'

  • ISmartPhone isphone = new SamsungPhone();
    • interface 참조변수를 통해서 구현 클래스 참조 가능
    • interface에 정의되지 않고 자식 객체에 정의된 필드나 메서드는 접근 또는 사용이 불가능하다

실행 화면


인터페이스(Interface)란?

"기능의 계약서"로, 클래스가 어떤 기능을 제공해야 하는지를 명시하는 구조이다
자바 8부터는 일부 메서드 구현도 가능해졌다
인터페이스는 다중 상속이 가능한 유일한 방법이며, 객체 간의 결합도를 낮추고 유연한 구조를 설계하는 데 사용된다

✅ 주요 특징

  • interface 키워드로 선언
  • 기본적으로 모든 메서드는 public abstract (Java 8부터 default, static도 허용)
  • 다중 구현(다중 상속) 가능 (implements 사용)
  • 필드는 public static final (상수)만 선언 가능


    interface는 위에서도 사용하고 있으니 구체적인 예시는 생략!

default 메서드 예시

  • 여기서의 default는 접근 제한자가 아니며 interface 내에서 구현한 메서드이다
    • 기본적으로 public 접근 제한을 받는다

static 메서드 예시

  • 객체 없이 인터페이스만으로 호출 가능한 메서드이다
    • default와 마찬가지로 기본적으로 public 접근 제한을 받는다

0개의 댓글