본문 바로가기

Java

[Java] Interface의 Upcasting

TV들이 아주 작 작동하는 군요. 하지만 사용자는 인터페이스를 통해서 조작하고 있습니다. 물론 TV를 만들어지만 TV내부는 각 회사에서 알아서 하겠죠. 하지만 TV의 인터페이스가 같기 때문에 어느 회사의 제품이나 조작하기는 편할 것입니다. 데이터베이스의 드라이브도 이러한 방식으로 Sun사에서 Database의 interface를 정의해두고 그 interface에 의해서 만들도록 하는 것입니다.

 

                           TVBoard s = new SSgTV();

                           TVBoard g = new LGgTV();

 

이 두 줄을 유심히 봐 주시기 바랍니다. 일반적인 Upcasting의 개념이 그대로 interface에서도 적용되고 있습니다. 이것은 인터페이스 자체도 클래스이기 때문에 Upcasting을 적용할 수 있는 것입니다. 사용자 측면에서 인터페이스가 고정되어 있으면 많은 시간과 비용을 절약할 수 있을 것입니다. 모든 TV가 같은 인터페이스로 되어 있다면 하나의 조작법만 안다면 모든 TV를 조작 할 수 있을 것입니다. 이것이 바로 인터페이스의 본질적인 역할입니다. 말 그대로 인터페이스는 인터페이스입니다.

 

 

 

 

 

 

5.4.3 Abstract와 Interface에서의 Upcasting

 

 우리는 upcasting을 일반적인 클래스 구조에서만 살펴 보았습니다. 하지만 이것은 abstract와 interface에서도 적용 되어 질 수 있습니다. 그 구조는 다음과 같을 것입니다.

그런데 다음과 같은 질문을 할 수 있을 것입니다.

n         abstract는 객체를 생성할 수 없다.

n         interface는 객체를 생성할 수 없다.

이러한 말에 부딪히게 됩니다. abstract와 interface는 객체를 생성하는 것이 아니라 만들어진 객체를 할당 받는 것입니다. 형은 같기 때문에 이러한 것이 가능합니다. abstract나 interface로는 new연산자를 사용하지 않습니다. 단지 만들어진 객체를 upcasting을 이용해서 넘겨 받을 뿐입니다. 이러한 것은 많은 장점을 내포하고 있습니다. 알고 보면 interface는 빈 껍데기에 불과 합니다.

사용자는 용량이 적은 빈 껍데기만 가지고 있어도 모든 작업을 전부 수행 할 수 있습니다. 우의 그림에서는 설명을 위해서 임의의 interface만들었습니다. 이 인터페이스를 이용해서 우리는 다음과 같은 코드를 작성 할 수 있을 것입니다.

 

n         Shape s = new Circle();

n         Action a = new Circle();

n         Attribute ab = new Circle();

n         Circle c = new Circle();

 

이 코드의 장점은 사용자는 내부를 몰라도 된다는 것입니다. interface만 있다면 어떠한 작업이라도 전부 할 수 있습니다. 이러한 장점은 우리가 직접 만들어서 작업하기 보다는 내부적으로 이루어지는 경우가 아주 많습니다. 하지만 이것을 잘 이용하면 보다 정교한 프로그램작업을 할 수 있으리라 생각됩니다.

 

 

5.4.4 결론

여러분들이 잘 모르고 사용하는 Upcasting은 아주 많은 장점을 제공하고 있습니다. 자바도 여러 종류이지만 고급 자바로 갈수록 이 Upcasting개념은 더욱 철저하게 적용됩니다. RMI, Enterprise Java Beans, Mobile Java, Personal Java, Java Dynamic Management Kit등 사용 안 되는 곳이 없습니다. 어차피 자바를 배우면 실무에서 다루지 않겠습니까?

 

다형성을 주장하는 Upcasting의 장점은 abstract, interface, encapsulation, overriding 등 아주 많은 부분과 관련이 있습니다. 이 upcasting과 interface에 대해서 제대로 이해했다면 자바는 바로 여러분들의 손에 있는 것입니다.

 

출처 : www.jabook.org