>  기사  >  백엔드 개발  >  golang은 객체지향적인가요?

golang은 객체지향적인가요?

(*-*)浩
(*-*)浩원래의
2019-12-31 10:27:443053검색

golang은 객체지향적인가요?

Go 언어에서는 객체지향 개념이 명시적으로 제시되지는 않지만 기존 구문 설계를 기반으로 객체지향 코드를 작성할 수도 있습니다. Go 언어의 객체지향은 구조체 구조를 사용하여 구현됩니다. (권장 학습: Go 推荐)

객체 지향의 두 가지 핵심 유형을 달성하는 Golang은 Struct와 Interface입니다. 그 중 Struct는 C++ 일반 유형과 유사하며 인터페이스는 추상 유형에 해당합니다.

public/protected/private을 사용하여 멤버 및 메서드의 가시성을 나타내는 C++와 달리 Golang은 대문자와 소문자를 사용하여 가시성을 나타냅니다. 즉, 대문자로 시작하는 멤버/메서드는 외부 세계에 표시되지만 소문자로 된 클래스의 전용 멤버이며 외부 세계에 직접 액세스할 수 없습니다.

또한 클래스 유형 정의에 있어서 Golang과 C++ 사이에는 또 다른 중요한 차이점이 있습니다. 즉, Golang은 구조체 내에서 클래스의 멤버 변수만 선언하면 되고 구조체의 모든 메서드를 선언하거나 정의할 필요는 없습니다. 클래스 정의 본문. 메소드 정의는 구조체 외부에서 수행됩니다.

Golang은 구조체를 통해 클래스 속성을 정의하고, func가 정의될 ​​때 클래스 객체를 전달하여 클래스 메서드를 정의합니다. 속성과 메서드의 공용/개인 속성은 첫 글자의 대소문자에 따라 결정됩니다.

type Student struct {
	name  string
	age   int
	major string
}

Golang은 상속을 완전히 구현하지 않고 조합을 통해 구현합니다. 복합 클래스(서브클래스)는 결합된 클래스(기본 클래스)의 퍼블릭 메서드를 직접 호출하고 기본 클래스의 퍼블릭 속성에 액세스할 수 있으며, 서브클래스는 자체 속성을 정의하고 고유한 메서드를 구현할 수도 있습니다.

Golang의 디자인 철학 중 하나는 단순성입니다. 멤버/메서드의 공개/개인 속성을 케이스 구분을 통해 차별화하고 조합을 통해 상속을 구현하는 것은 모두 단순성의 철학을 표현합니다.

Golang의 인터페이스 유형은 메소드 세트인 추상 기본 클래스를 정의합니다. 이러한 메소드를 완전히 구현하는 모든 유형을 인터페이스 구현이라고 합니다. 추상화와 다형성은 서로를 보완하거나 추상화의 목적이 다형성을 달성하는 것이기 때문입니다.

위 내용은 golang은 객체지향적인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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