CH7-38 인터페이스와 다형성

[자바의 정석 - 기초편] ch7-38인터페이스와 다형성

이번시간에는 인터페이스를 이용한 다형성에 대해 배워보겠다.

다형성이 무엇인가? Tv t = new SmartTv 처럼 조상 참조변수로 자손 객체를 참조하는 것이 가능하다는 것임. 이때 타입이 다를 수 있다는게… 객체지향의 다형성이다.

인터페이스도 구현 클래스의 부모같은 역할 수 있다. 엄밀히 말하면 부모는 아니다. 부모 자식개념은 extends키워드를 이용한 상속 개념에서 등장하는 것이고, 인터페이스는 implements키워드를 이용하기 때문임.

Untitled

implements를 이용한 것도 부모 자식 개념으로 생각하면… 인터페이스도 다른 클래스의 부모가 될 수 있다… 엄밀히 말하면 부모는 아니지만.. 왜냐하면 다중상속이 가능하기 때문이다. 하지만 인터페이스는 전 강의에서 말한 것 처럼 다중상속이 가능함.

참고로 인터페이스는 C++에는 없는 개념임. 인터페이스를 이용해 자바는 다중상속개념을 구현하면서도, 충돌문제를 해결하려 했다.

인터페이스도 다형성을 적용시킬 수 있다.

Untitled

인터페이스 타입으로 자식 클래스 객체를 참조하는게 가능하다. 대신, 이때도 해당 인터페이스에 존재하는 (추상)메서드 선언들만 활용가능하다. 리모콘 비유를 생각하자.

어쨌든 가능은 하다. 활용가능한 멤버 개수는 줄어들더라도..

또한 메서드의 매개변수를 인터페이스 타입으로 설정할 수 있다.

Untitled

이는 해당 인터페이스를 완성시킨 클래스의 인스턴스들만 이 매개변수의 인자가 될 수 있다는 의미임.(뭔가 잘 와닿지 않는다.) 이걸 외우라고 함.