저작권 안내
- 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
- 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.
구조체 임베딩 사용하기
이재홍 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 공유는 허용합니다.