다형성_인터페이스

song yuheon·2023년 8월 27일
0

Java

목록 보기
20/46
post-thumbnail

다형성의 핵심은 같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 성질을 의미한다. 인터페이스의 다형성은 그 의미를 효과적으로 실현한다.

구현 객체의 자동 타입 변환:

  • 인터페이스 변수에 구현 클래스의 객체를 대입하면 해당 인터페이스 타입으로 자동 변환된다.
  • 이렇게 변환된 인터페이스 변수는 인터페이스의 메서드만 호출할 수 있다.
public class Main {
    public static void main(String[] args) {

        // A 인터페이스에 구현체 B 대입
        A a1 = new B();

        // A 인터페이스에 구현체 B를 상속받은 C 대입
        A a2 = new C();

    }
}

interface A { }
class B implements A {}
class C extends B {}

강제 타입 변환:

  • 구현 객체를 다시 원래의 타입으로 변환할 때는 강제 타입 변환을 사용한다.
  • 강제 타입 변환은 원래의 구현 객체가 가진 필드와 메서드를 사용하고 싶을 때 주로 사용된다.
B b1 = (B) a1;

인터페이스의 다형성:

  • 인터페이스는 참조 변수의 타입으로 사용되면, 다양한 구현 클래스를 참조할 수 있다.
  • 이러한 특성으로 인해 메서드의 매개변수나 반환 타입으로 인터페이스를 사용하면 다양한 구현 객체를 사용할 수 있게 되어 코드의 유연성을 높인다.
interface MultiRemoteController {
    void turnOnOff();
    void volumeUp();
    void channelUp();
}

class LgTv implements MultiRemoteController {
    private String name;
    public LgTv(String name) { this.name = name; }
    // ... (MultiRemoteController interface methods implemented)
}

class SamsungTv implements MultiRemoteController {
    private String name;
    public SamsungTv(String name) { this.name = name; }
    // ... (MultiRemoteController interface methods implemented)
}

위의 코드에서 MultiRemoteController라는 인터페이스를 통해 LG TV와 Samsung TV, 두 가지 다른 구현체를 동일하게 제어할 수 있다. 이는 다형성의 특징을 잘 나타내는 예시이다.

profile
backend_Devloper

0개의 댓글