구조체 임베딩 사용하기

이재홍 http://www.pyrasis.com 2014.12.17 ~ 2015.02.07

메서드 오버라이딩 상황

다음과 같이 Student 구조체도 Person 구조체와 같은 이름의 greeting 메서드를 가지고 있다면 이때는 Student 구조체의 greeting 함수가 오버라이드됩니다.

type Student struct {
	Person
	school string
	grade  int
}

func (p *Student) greeting() { // 이름이 같은 메서드를 정의하면 오버라이딩됨
	fmt.Println("Hello Students~")
}

func main() {
	var s Student

	s.Person.greeting() // Hello~
	s.greeting()        // Hello Students~
}

부모 구조체의 메서드 이름과 중복된다면 상속 과정의 맨 아래 메서드가 호출됩니다. 즉, 자식 구조체의 메서드가 부모 구조체의 메서드를 오버라이드(Override)하게 됩니다. 부모 구조체의 메서드를 호출하고 싶으면 s.Person.greeting()과 같은 형태로 구조체 타입을 지정하여 호출합니다.


저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.

Published

01 June 2015