프로그래밍 기술/안드로이드

[안드로이드] 39. OOP - 상속과 다형성 - 상속 개요

언제나휴일 2016. 5. 16. 09:27
반응형
   

 [안드로이드] 39. OOP - 상속과 다형성 - 상속 개요


 이번에는 OOP의 특징 중에 상속과 다형성에 관하여 살펴봅시다.

 

 상속과 다형성은 캡슐화와 더불어 OOP 언어의 주요 특징입니다. 상속은 유사한 클래스의 공통적인 부분을 기반 형식으로 정의하고 이를 파생하여 세부적인 사항을 추가 및 변경하여 파생 형식을 정의하는 방법입니다. 이러한 특징은 기반 형식을 확장하여 다양한 파생 클래스를 정의할 수 있게 해 줍니다.

 

 그리고 다형성은 파생 형식 개체를 기반 형식의 변수로 참조할 수 있고 멤버 메서드를 호출하면 참조하는 형식의 메서드가 아닌 실제 개체의 메서드를 호출할 수 있게 하여 상속의 장점을 극대화시킵니다.

 

상속 개요 

 Java 언어에서는 여러 클래스의 공통점을 기반 클래스에 정의하고 파생 클래스를 정의할 때 기반 형식에서 확장하여 추가 및 변경할 수 있습니다. UML에서는 기반 클래스와 파생 클래스 사이에 삼각형과 실선으로 상속을 일반화 관계로 표현하며 피아니스트는 음악가이다.처럼 두 형식 사이에 이다.(is a)로 나타낼 수 있을 때 사용합니다.

UML에서 일반화 관계

[그림] 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를 정의하여 상속을 활용한 예

반응형