티스토리 뷰

안녕하세요 박스여우입니다.

오늘은 Java 객체지향 개념의 상속에 대해서 알아보겠습니다.


상속

지난 강좌(요기) 에서 설명해 드렸던 Java 의 특징중에서는 코드의 재사용성이 높다는 특징이 있었습니다.

그런 Java에서 코드의 재사용성을 높여주는 것들 중 하나가 바로 상속 이라는 개념 입니다.


상속은 어떤 클래스를 확장(extend)해서 사용할 수 있습니다. 예를들어 핸드폰에는 전화를 할 수 있는 기본적인 기능이 있습니다. 하지만, 핸드폰에서 더 발전하여 스마트폰을 만든다고 할때, 스마트폰에도 전화기능이 있기 때문에 전화를 하는 기능을 다시 새롭게 만들어야 하지만 이미 완성돼 있었던 핸드폰의 전화 기능을 사용한다면 다시 만들 필요도 없고, 자원과 시간이 낭비될 필요도 없습니다.


java에서는 위와같은 장점들을 얻기 위해서 상속이라는 개념을 사용합니다. 상속은 이미 있던 클래스를 새로운 클래스에서 확장해서 사용할 수 있습니다.

Phone 이라는 클래스에 Call(전화)를 하는 기능(메소드)가 있다면, Smart Phone라는 클래스에 Phone을 상속하게 되면 Smart Phone 이라는 클래스에서 Call(전화)를 하는 기능을 사용할 수 있게 됩니다.


상속의 개념에서 상속한 클래스는 부모 클래스, 상속받은 클래스는 자손 클래스라 불립니다. 부모클래스를 상속받기 위해서는 extends 라는 예약어를 사용하는데, 코드를 통해 자세히 알아봅시다.


1
2
3
4
5
6
7
8
9
10
11
12
class Phone{
    public void Call(){
        System.out.println("전화중..");
    }
}
 
class SmartPhone extends Phone{
    public void test(){
        Call();
    }
}
 
cs


위의 예시를 보면 SmartPhone 클래스 선언부에 extends Phone(클래스이름)을 붙여서 Phone클래스를 상속받았습니다. 따라서 Phone 클래스가 부모 클래스, SmartPhone 클래스가 자손 클래스가 되었습니다.

SmartPhone 클래스에는 Call 메소드가 없지만 사용할 수 있습니다. 그 이유는 바로 Phone 클래스를 상속받았기 때문입니다. 상속을 사용하면 위와 같이 상속받은 클래스의 변수와 메소드등을 자손 클래스에서 그대로 사용할 수 있습니다.


하지만, 그렇다고 부모 클래스의 모든 변수와 메소드들을 사용할 수 있지는 않습니다. 만약 변수나 메소드의 접근한정자가 public 이 아니라 private라면 상속을 받더라도 해당 메소드나 변수는 사용할 수 없습니다.


그리고 자바에서는 여러 부모 클래스들을 상속받을 수 없는 단일상속 이라는 특징을 가지고 있습니다. 반대의 개념인 다중상속은 여러 클래스들의 기능이나 속성들을 손 쉽게 사용할 수 있지만, 메소드의 이름이나 변수명 등이 겹치게 되면 문제가 발생할 가능성이 있고, 클래스간의 관계가 복잡해 집니다. 하지만 단일상속클래스간의 관계가 명확해지고 코드를 신뢰할 수 있도록 만들어주는 장점이 있습니다.


다음 강좌에서 이어서 상속을 좀더 활용하는 방법을 알아보겠습니다.

댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함