블로그 이미지
'무른모'란 부드럽다라는 뜻을 가진 '무르다'라는 말과 도구, 연장을 뜻하는 '연모'라는 순 우리말의 합성어로 소프트웨어를 말합니다. seanhigher

카테고리

분류 전체보기 (161)
Blog srart (16)
Dev Center (94)
Real Life (13)
Mac life (21)
Naver life (17)
Total659,138
Today21
Yesterday31

'오버라이딩'에 해당되는 글 1건

  1. 2010.08.08 똑같지만, 다른... 메소드 오버라이딩.
먹는다라는 행동은 모든 생물에게 있어서 동일하게 적용이 된다. 하지만, 먹는 모양새가 모두에게 동일한 것은 아니다. 동물들같은 경우는 씹어먹는다고 할 수 있고, 식물들 같은 경우는 먹는다기 보다는 흡수에 가깝다고 할 수 있다. 이들이 모두 생물이라는 사실과, 먹는행동을 한다는 것은 같다.


오버라이딩의 개념.
오버라이딩은 쉽게 말하면 덮어쓰기를 하는 것이다. 상위 클래스를 상속받은 하위 클래스에서 상위클래스가 가지고 있는 메소드를 재 정의하여 자신에게 맞게 사용되는 것을 말한다. 만일 '생물' 이라는 클래스가 '먹는다' 라는 메소드를 가지고 있다고 가정해보자. '동물' 클래스와 '식물' 클래스는 생물을 상속받아서 생성이 가능하다. 하지만, 이것들이 '먹는다'라는 메소드를 통해 동일한 행동을 하기에는 조금 무리가 있다. 똑같이 먹는 행동을 하기는 하지만, 그 행동에는 현저한 차이가 있는 것이다. 이렇게 상속을 받지만 그 행동이 다를 경우 자신의 객체에서 새롭게 정의를 하는 기능이 메소드 오버라이딩이다.


메소드 오버라이딩 하기.
메소드 오버라이딩을 하기 위해서는 상위 클래스와 동일한 타입의 인자와 수를 일치 시킨 후 메소드를 정의하면 된다.

class 생물 {
    public void 먹는다() {
        에너지를 흡수한다;
    }
}

class 동물 extends 생물 {
    public void 먹는다() {
        음식물을 섭취한다;
    }
}


메소드 오버라이딩은 왜 필요한가??
궃이 메소드 오버라이딩이 없어도, 자신이 필요한 메소드를 생성하고, 선언해서 사용하면 별다른 문제는 없다. 그냥 선언해서 사용하면 되니까... 하지만, 메소드 오버라이딩은 매우 중요한 요소중의 하나이다. 이것은 자바에서 추구하는 다형성에서 그 원인을 찾을 수 있다. 자바에서는 다형성을 통해 다양한 클래스들이 서로 상관 관계를 갖게 되고, 각 클래스에 대해서 잘 알지 못하더라도, 상속과, 구현을 통해서 이미 만들어진 것들을 사용하는 것이 가능하다. 그리고 이 다형성의 특징 중 하나는, 동일한 Object 타입으로 묶을 수 있다는 것이다. 클래스의 형태를 따르는 각 객체들을, 그것을 상속받는 상위 클래스의 형태로 묶음으로써 좀더 편리하게 각 객체들을 관리하는 것이 가능한 것이다. 더욱이 중요한 사실은 이 객체들은 동일한 '먹는다' 라는 메소드를 실행한다고 할찌라도, 자기 자신에게 맞는 동물의 '먹는다'라는 메소드를 실행할 수 있게 된다. 각 클래스마다 다르게 구현을 할 필요없이, 메소드 오버라이딩을 통해서 한번에 로직을 작성하는 것이 가능한 것이다.

Posted by seanhigher

댓글을 달아 주세요

최근에 달린 댓글

글 보관함