[안드로이드] 39. OOP - 상속과 다형성 - 상속 개요
이번에는 OOP의 특징 중에 상속과 다형성에 관하여 살펴봅시다.
상속과 다형성은 캡슐화와 더불어 OOP 언어의 주요 특징입니다. 상속은 유사한 클래스의 공통적인 부분을 기반 형식으로 정의하고 이를 파생하여 세부적인 사항을 추가 및 변경하여 파생 형식을 정의하는 방법입니다. 이러한 특징은 기반 형식을 확장하여 다양한 파생 클래스를 정의할 수 있게 해 줍니다.
그리고 다형성은 파생 형식 개체를 기반 형식의 변수로 참조할 수 있고 멤버 메서드를 호출하면 참조하는 형식의 메서드가 아닌 실제 개체의 메서드를 호출할 수 있게 하여 상속의 장점을 극대화시킵니다.
상속 개요
Java 언어에서는 여러 클래스의 공통점을 기반 클래스에 정의하고 파생 클래스를 정의할 때 기반 형식에서 확장하여 추가 및 변경할 수 있습니다. UML에서는 기반 클래스와 파생 클래스 사이에 삼각형과 실선으로 상속을 일반화 관계로 표현하며 “피아니스트는 음악가이다.”처럼 두 형식 사이에 “이다.(is a)”로 나타낼 수 있을 때 사용합니다.
[그림] UML에서 일반화 관계
Java 언어에서는 파생 클래스를 정의할 때 어떤 형식을 기반으로 할 것인지 extends 키워드를 이용하여 표현합니다.
class 파생 클래스명 extends 기반 클래스명{
}
예를 들어 음악가 형식에 “연주하다.” 메서드를 정의하고 음악가 형식을 기반으로 파생 클래스 피아니스트를 정의하면 피아니스트 형식은 기반 형식에 정의한 멤버를 상속받습니다. 따라서 피아니스트 개체의 “연주하다.” 메서드를 호출할 수 있다는 것입니다.
public class Musician { public void play(){ System.out.println("연주하다."); } } |
public class Pianist extends Musician{ public void tuning(){ System.out.println("조율하다."); } } |
public class Program { public static void main(String[] args){ Pianist pianist = new Pianist(); pianist.play(); pianist.tuning(); } } |
연주하다. 조율하다. |
[소스] Musician을 기반으로 파생 클래스 Pianist를 정의하여 상속을 활용한 예
'프로그래밍 기술 > 안드로이드' 카테고리의 다른 글
[안드로이드] 44. Java 다형성 개요 (0) | 2016.05.16 |
---|---|
[안드로이드] 43. Java 접근 지정자 protected (0) | 2016.05.16 |
[안드로이드] 42. Java 필드 재정의(override) (0) | 2016.05.16 |
[안드로이드] 41. Java 메서드 재정의(override) (0) | 2016.05.16 |
[안드로이드] 40. Java super 키워드를 이용한 기반 형식부분 생성 (0) | 2016.05.16 |
[안드로이드] 38. Java 정적 멤버와 static 키워드 (0) | 2016.05.16 |
[안드로이드] 37. Java 생성자 중복정의, this, this() (0) | 2016.05.16 |
[안드로이드] 36. Java 개체의 생과 사 (0) | 2016.04.17 |
[안드로이드] 35. Java 중복 정의(Overloading) (0) | 2016.04.17 |
[안드로이드] 34. Java 접근 지정자 (0) | 2016.04.17 |