Java

상속과 다형성 1

태인킴 2020. 11. 4. 21:11
반응형


객체 지향이 주는 장점구현 변경의 유연함 입니다. 객체캡슐화를 통해서 객체를 사용하는 다른 코드에 영향최소화 하면서 객체의 내부 구현을 변경할 수 있는 유연함을 얻을 수 있습니다. 유연함을 얻을 수 있도록 해주는 또 다른 방법은 추상화에 있습니다. 추상화를 가능하게 해주는 다형성에 대해서 알아보겠습니다.

 

 

1. 다형성(Polymorphism)

다형성(Polymorphism)한 객체여러 가지(poly) 모습(morph)을 갖는다는 것을 의미 합니다. 여기서 모습은 타입을 의미 합니다. 따라서, 다형성이란 한 객체가 여러 타입을 가질 수 있다는 것을 의미 합니다.

 

여기서, 객체타입A로도 사용할 수 있고, 타입B로도 사용할 수 있고, 타입C로도 사용할 수 있습니다. 타입 상속은 크게 인터페이스 상속구현 상속으로 구분해 볼수 있습니다.

 

 

2. 인터페이스 상속

인터페이스 상속은 순전히 타입 정의만을 상속 받는 것 입니다. java의 interface추상 클래스를 통한 상속을 의미 합니다. java와 같이 클래스 다중 상속을 지원하지 않는 언어에서는 interface를 이용해서 객체가 다형을 갖게 합니다. 

 

 

3. 구현 상속

구현 상속클래스 상속을 통해서 이루어 집니다. 구현 상속은 보통 상위 클래스에 정의된 기능을 재사용하기 위한 목적으로 사용 됩니다.

 

 

4. 추상화

추상화(abstraction)데이터나 프로세스 등을 의미가 비슷한 개념이나 표현으로 정의하는 과정 입니다.

1. FTP에서 파일 다운로드

2. 소켓으로 데이터 읽기

3. DB 테이블 조회

위 그림으 이 3가지 기능'로그 수집' 이라는 개념으로 '추상화' 시켰습니다. 

 

 

위와 같이 java의 클래스에 적용하여 인터페이스를 도출 할수 있습니다. LogCollector가 추상 타입 입니다. 이 추상 타입만으로 'FTP에서 로그 파일을 다운로드', '소켓에서 데이터를 얻을지', 'DB 테이블에서 데이터를 읽어' 올 지 알수 없습니다. 단지, LogCollector를 통해서 알수 있는 것은 '로그 정보를 수집 한다' 정도만 알수 있습니다. 따라서, LogCollector에서 실제로 로그를 어떻게 수집하는지에 대한 상세 구현에 대해서는 알 수 없습니다.

 

 

 

상속과 다형성 2(추상 타입을 이용한 구현 교체의 유연함)

상속과 다형성 1 객체 지향이 주는 장점은 구현 변경의 유연함 입니다. 객체는 캡슐화를 통해서 객체를 사용하는 다른 코드에 영향을 최소화 하면서 객체의 내부 구현을 변경할 수 있는 유연함

coding-food-court.tistory.com

반응형