본문 바로가기

Java

인터페이스4

타입변환과 다형성

다형성이란?? 상속때부터 계속해서 나온 녀석이다. 상속 뿐만 아니라 앞에 말 했듯 인터페이스도 다형성을 구현 하는데에 사용된다. 

요즘은 상속보다 인터페이스가 다형성을 구현 하는데 많이 사용된다고 한다.

다형성은 하나의 타입에 대입되는 객체에 따라 다양한 결과가 나오는 것을 말한다. 

상속에서 부모 타입에 어떤 자식객체를 대입하는지에 따라 결과가 달라지 듯. 인터페이스에서는 인터페이스에 어떤 구현객체를 대입하느냐에 따라 다양한 결과가 나온다. 

다른 점은 개념적인 부분인데

상속은 같은 종류의 하위클래스를 만드는 것.

인터페이스는 사용법이 동일한 클래스를 만드는 것

이라는 부분이 다른것이다. 

상속의 경우 종류가 같은 하위 클래스를 만들고 자동타입변환을 통해 다형성을 사용하는 것이고

인터페이스의 경우 동일한 사용법의 클래스(구현객체)를 만들어 인터페이스에 대입하면서 다형성을 구현하는 것.

이 부분이 다른 듯 하다 물론 내 생각일 뿐이다. 

앞에 인터페이스를 배우면서 알았겠지만 인터페이스를 사용하면서 구현객체를 바꾸어 대입하기만 하면 되니 쉽고 빠르게  다형성을 구현할 수있다.

인터페이스는 메소드의 매개변수로 많이 등장한다고 한다. 

인터페이스 타입으로 매개 변수를 선언 하면 매개값으로 구현 객체만 바꾸면서 여러 결과값을 얻을 수 있다. 

이게 매개변수의 다형성이다.예를 들어보자

 

useRemoteControl()이 라는 메소드의 매개변수로 RemoteControl인터페이스타입을 사용한다고 하자 

이 매개변수의 값으로 구현객체 Television와 Audio를 사용할 수 있다. 구현객체의 내용은 다를 태니 나오는 결과값도 다를 것이다. 


자동 타입 변환(Promotion)

우리가 인터페이스 타입변수를 만들고 구현객체를 대입 할 때 모양은????

     인터페이스타입 변수명 = new 구현객체();

이거 어디서 봤지않나?? 그렇다 자동타입변환이다.  구현객체가 인터페이스타입으로 변환 되는것은 자동타입변환에 해당한다.

구현클래스를 상속해서 자식클래스를 만들었다면 자식객체도 인터페이스타입으로 자동타입변환이 가능하다.



필드의 다형성 


'Java' 카테고리의 다른 글

인터페이스 5  (2) 2019.01.29
인터페이스3  (0) 2019.01.18
인터페이스(Interface)2  (1) 2018.12.31
인터페이스 (Interface)  (0) 2018.12.29
추상클래스(abstract)  (0) 2018.12.23