>백엔드 개발 >Golang >golang에서 상속을 구현하는 방법은 무엇입니까?

golang에서 상속을 구현하는 방법은 무엇입니까?

coldplay.xixi
coldplay.xixi원래의
2020-07-18 15:53:278212검색

Golang의 상속 구현 방법: Go는 조합을 사용하여 상속의 의미를 표현합니다. 코드는 [type Cat struct {p *Pet}func (c *Cat) Catch(){fmt.Println("***** " )}].

golang에서 상속을 구현하는 방법은 무엇입니까?

golang에서 상속을 구현하는 방법:

캡슐화 주제를 사용하여 프로그래밍 언어로 변환하고, A는 고양이를 애완동물로 캡슐화하고, B는 개를 애완동물로 캡슐화하며, C는 pet, the cat 개와 애완동물은 모두 애완동물이며 최종 결과는 특정 애완동물이 특정 요구 사항을 충족하지 못할 가능성이 높기 때문에 프로그램이 여전히 정상적으로 실행되거나 프로그램이 예기치 않게 충돌하는 것입니다.

이 반복되는 정의입니다. 문제는 서로 다른 포장 표준에 기인하며, 고양이와 개의 캡슐화 과정은 독립적으로 수행되며, 공통 모델을 계속 추상화할 수 있는지 확인하기 위해 함께 논의되지 않습니다.

이러한 다중 상관 개념 캡슐화는 이러한 문제가 발생하기 쉽기 때문에 적절한 통합 분석을 수행하고 이를 기반으로 상위 수준 캡슐화 개념을 계속 추상화하는 것이 특히 중요합니다. 이 일반적인 개념에서 벗어나 모델의 의미는 크게 단순화되었습니다. 일반적인 캡슐화 개념과 상위 수준의 추상 캡슐화 개념 사이의 관계는 객체 지향, 즉 고양이입니다. 고양이는 애완동물의 특성뿐만 아니라 고양이 고유의 특성도 가지고 있다는 뜻입니다.

개도 마찬가지고, 개도 개 그 자체를 반영합니다.

언어는 다른 주류 객체지향 언어와 다릅니다. Go는 상속 기능을 지원하지 않으므로 단일 상속, 다중 상속, 재정의 메서드 등의 복잡한 개념이 없습니다.

Go그러면 Go는 어떻게 설명합니까? 이런 일반적인 캡슐화와 추상 캡슐화의 관계는?

고양이가 애완동물로 정의되고 개도 애완동물로 정의되는 것은 절대 아닙니다. Way!

Go는 상속의 의미를 확장 키워드를 통해서가 아니라 구현합니다. 구조 조합을 통해.

애완동물은 민간용과 군용이 모두 가능해야 합니다. 여기서는 구조의 필드에 관심이 없으므로 관련 필드는 없습니다. 쥐를 잡을 수 있는 애완동물. Go는 상속의 의미를 표현하기 위해 조합을 사용합니다.

type Pet struct {
}
func (p *Pet) Skill() {
    fmt.Println("能文能武的宠物")
}

개는 내비게이션 기능이 내장된 애완동물입니다. 나의 안내견의 초능력을 보세요!

type Cat struct {
    p *Pet
}
func (c *Cat) Catch() {
    fmt.Println("老鼠天敌喵喵喵")
}

다음으로 C는 고양이와 개가 같은 것인지 테스트하기 시작했습니다. 애완동물은 문명화되고 유능하다는 기본적인 요구 사항을 갖고 있으면서 동시에 자신만의 특성도 갖고 있는 걸까요?

type Dog struct {
    p *Pet
}
func (d *Dog) Navigate() {
    fmt.Println("自带导航汪汪汪")
}

위의 결과는 Go 언어에서는 확장 키워드로 표현되는 상속 기능을 지원하지 않지만, 이를 증명합니다. , 결합 방법은 상속 의미를 달성할 수도 있습니다

관련 학습 권장 사항:

Go 언어 튜토리얼

위 내용은 golang에서 상속을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.