질문과 답변

Extra Form
질문이 여러개 인데 한번에 하겠습니다.

1.다른분들이 만드신 스크립트를 분석하다가 
Game_Event < Game_Event  이런 구문을 봤는데요
자기상속? 자기자신을 구지 상속받는 이유가 무엇이요??

2.
class Game_Character 
def refresh #1
~~~~
end
end
class Game_Event 
def refresh #2
~~~
end
end
class Game_Event < Game_Character 
def refresh #3
~~
end
end

만약 위의 예처럼 Game_Event 와   Game_Character 에 이미 refresh메소드가 정의 되어있는데 (#1,#2) 이것을 다시 정의(#3)하면
어떤 부분이 오버라이딩이 되는 건가요? Game_Event 의 refresh 인가요 Game_Character 의 refresh 인가요?


Comment '1'
  • ?
    허걱 2012.07.25 10:39
    1. 상속받는것이 부모클래스의 기능을 사용할 수 있게 하기 위함이 주된 이유입니다.
    자기 자신을 상속받는 이유역시 이미 정의된 클래스의 기능을 사용하기 위함이죠.
    보통 자신을 상속받는것은 메소드를 재정의하거나 추가정의 하기 위해서 사용합니다.
    하지만... 자신을 상속받으면 다른 스크립트와의 충돌 우려가 있기 때문에
    최근에는 자가상속보다 alias 를 이용한 메소드 이름을 재정의 해주는 방법이 많이 사용됩니다.

    2. #3 는 #2를 재정의하고 #1을 오버라이드합니다.
    Game_Event 라는 클래스의 이름이 같고 refresh 라는 메소드의 이름이 같기 때문에 #3 는 #2를 재정의하게 됩니다. 여기서 #3의 Game_Event 클래스는 Game_Character 클래스를 상속받았으므로 Game_Character 에서 정의되어 있는 refresh #1 을 오버라이드 하게 되죠.

List of Articles
종류 분류 제목 글쓴이 날짜 조회 수
공지 묻고 답하기 가이드 습작 2014.06.14 12397
Board Pagination Prev 1 ... 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 Next
/ 83