본문 바로가기

PROGRAMMING/JAVA

4. 상속(inheritance)

이번엔 상속에 대해 알아보자.
상속이 무엇일까?

- 상속(inheritance) : 부모가 소유하고 있는 재산의 일부를 자식이 물려받는 것을 말한다. 

                              즉, 클래스를 가져다가 확장해서 새로운 클래스를 만드는 기술.


가져다가 확장? 잘 이해가 되지 않는 분들을 위해 그림을 통해 설명을 하겠다.

출처 : 뇌를 자극하는 Java 프로그래밍, 한빛미디어, 김윤명 저


상속을 통해 기존에 있던 클래스를 고스란히 가져와 내가 추가해야 할 부분만 추가하면 클래스가 새로 만들어지는 것이다. 

이렇게 상속을 통해 장점이 생기는 것이다.


1) 잘 설계된 클래스를 재사용 가능하다.

2) 재사용으로 인해 코드의 간결성이 높아진다.

3) 잘 정의된 super 클래스가 있다면, sub 클래스의 작성이 간편해지고 개발 시간이 단축된다.


그렇다면 이렇게 JAVA에서 쓰이는 상속의 특징은 뭐가 있을까?


1) 단일 상속만 가능하다.(원천적으로는 다중 상속이 불가능하다. 그러나 예외사항으로 'interface'가 있다. 그것은 추후에 포스팅할 예정!)

: 다중 상속을 하게 되면 클래스 간의 관계의 명확성이 떨어지고 애매모호함을 가지게 됨으로 그 사항을 제거해야 한다.

2) java.lang.Object 를 무조건 상속받도록 되어있다.

: java.lang.Object는 모든 클래스의 조상클래스이다. JRE(Java Runtime Environment) class lib에 이미 java.lang 패키지가 있어서 디폴트로 상속을 해준다.


-상속에서 사용되는 용어 정리

class      sub class명     extends   super class명  {

         Derivation Class명               Base Class명

            Child Class명                  Parent Class명   


상속의 샘플 예제이다.

먼저, generate getters and setters 를 통해 값 저장과 초기화를 시켜주는 메소드를 만든다.


CellPhone 클래스를 상속해와서 model과 num변수를 그대로 가져오고 변수를 하나 추가해 새로운 메소드를 만든다.

* super. 같은 경우에는 현재 클래스의 변수에서 찾아보지 않고 바로 부모 클래스로 올라가 변수를 찾아오도록 하는 것이다. this.model, this.number 을 써도 무방하며 this. 을 쓸 경우 자신의 클래스 내에서 변수를 먼저 찾아보고 없을 경우 부모 클래스에서 변수를 찾는다.


NexusOne 클래스도 CellPhone 클래스를 상속하여서 기존의 변수를 사용하고 새로운 변수를 추가하여 생성자를 생성한다.


IPhone과 NexusOne 생성자를 참고하여 파라미터를 넣어 객체를 생성하고 

생성한 값을 이용하여 출력을 한다.

다음은 결과값 출력 화면이다.



'PROGRAMMING > JAVA' 카테고리의 다른 글

'==' , compareTo(), equals() - 서로간의 차이점에 대해 알아보자  (0) 2013.03.12
잠깐) 보수법  (2) 2013.02.25
3. 배열(Array)  (0) 2013.02.25
2. 클래스  (0) 2013.02.20
1. JAVA 기초  (2) 2013.02.20