O que é herança em Golang

O que é herança em Golang
Na programação orientada a objetos, a herança refere-se à capacidade de uma subclasse herdar as propriedades de uma classe pai. Usando a herança, podemos reutilizar ou modificar as propriedades da classe pai, o que resulta em um código mais modular. No entanto, em Golang, a herança não é diretamente suportada devido à falta de classes. Este artigo cobre como se pode obter herança em Golang.

Herança em Golang

A herança em Golang é uma maneira de criar uma classe infantil que é uma versão modificada de uma classe existente ou pai. A classe recém -criada leva as propriedades da classe pai existente. A subclasse ou a classe infantil também pode modificar ou adicionar algumas novas propriedades na classe pai.

Sintaxe para herdar em Golang

Para herdar de uma classe pai em Golang, usamos o estrutura palavra -chave e incorporar a classe dos pais dentro da classe infantil. Aqui está um exemplo:

Tipo de estrutura pai
Propriedade1 String
Property2 int

Tipo Child Struct
Pai
Propriedade3 Float32

A sintaxe acima tem uma estrutura infantil que incorpora a estrutura pai, o que significa que herda todas as suas propriedades e métodos. A criança da criança também possui uma nova propriedade chamada Property3.

Por que Golang não apóia a herança

Na programação tradicional orientada a objetos, a herança é um conceito fundamental que envolve herdar propriedades de uma classe de pais para uma classe infantil. No entanto, desde então Golang não suporta classes, A herança é implementada usando a incorporação de estrutura.

Em Golang, as estruturas não podem ser estendidas diretamente, por isso usamos a composição para construir novos objetos usando o estrutura. Portanto, é preciso dizer que Golang não fornece suporte nativo à herança, mas apoia a composição como uma alternativa.

Como alcançar a herança em Golang usando a incorporação da estrutura

Em Golang, a herança é alcançada através de um mecanismo chamado incorporação de estrutura. Isso nos permite incorporar uma estrutura dentro de outra, o que resulta em uma relação como uma classe de pais e filhos. A estrutura infantil pode então acessar os campos e métodos da estrutura pai, como se fossem parte de sua própria definição.

Aqui está um exemplo de como alcançar a herança em Golang usando a incorporação da Struct:

tipo de pessoa da pessoa
String de nome
idade int

Tipo de funcionário struct
Pessoa // incorporando a estrutura da pessoa dentro da estrutura do funcionário
empid int
Salário Float64

No código acima, a estrutura da pessoa é incorporada pela estrutura de funcionários usando o nome do campo da pessoa sem um tipo, o que implica que está incorporando a própria estrutura. Isso cria uma relação entre pais e filhos entre as duas estruturas, onde a estrutura do funcionário é a criança, e a estrutura da pessoa é o pai.

Agora, quaisquer campos ou métodos definidos na estrutura da pessoa podem ser acessados ​​da estrutura do funcionário. Por exemplo, podemos acessar o campo de nome da estrutura da pessoa da estrutura do funcionário usando a notação de pontos:

e: = funcionário pessoa nome: "kash", idade: 24, 20, 1000
fmt.Println (e.nome)

Da mesma forma, podemos definir métodos na estrutura da pessoa que podem ser acessados ​​da estrutura do funcionário:

func (P *pessoa) Introduce ()
fmt.Printf ("oi, meu nome é %s e eu tenho %de ano de idade.\ n ", p.nome, p.idade)

func main ()
e: = funcionário pessoa nome: "kash", idade: 24, 20, 1000
e.introduzir()

Exemplo 1: Programa de Golang para mostrar herança na incorporação de estrutura

Pacote principal
importar "fmt"
tipo de pessoa da pessoa
String de nome
idade int

Tipo de funcionário struct
Pessoa // incorporando a estrutura da pessoa dentro da estrutura do funcionário
empid int
Salário Float64

func (P *pessoa) Introduce ()
fmt.Printf ("oi, meu nome é %s e eu tenho %de ano de idade.\ n ", p.nome, p.idade)

func (e *funcionário) apresenta ()
fmt.Printf ("oi, meu nome é %s e eu tenho %de ano de idade. Meu ID de funcionário é %D e meu salário é $ %.2f.\ n ", e.nome, e.idade, e.empid, e.salário)

func main ()
e: = funcionário pessoa nome: "kash", idade: 24, 20, 1000
fmt.Println (e.nome)
e.introduzir()

Aqui, definimos uma estrutura de pessoa e uma estrutura de funcionários que incorporam a estrutura da pessoa. Nós então definimos o introduzir() Método na estrutura da pessoa, que podemos acessar da estrutura do funcionário. Em Main (), criamos uma nova instância do funcionário e demonstramos como podemos acessar os campos e métodos da estrutura da pessoa incorporada.

Exemplo 2: Programa de Golang para mostrar várias heranças a uma estrutura

Pacote principal
importar "fmt"
tipo de pessoa da pessoa
String de nome
idade int

Tipo de estrutura de estudante
Pessoa // incorporando a estrutura da pessoa dentro da estrutura do aluno
rolno int

Tipo de professora de estrutura
Pessoa // incorporando a estrutura da pessoa dentro da estrutura do professor
empid int

func (P *pessoa) Introduce ()
fmt.Printf ("oi, meu nome é %s e eu tenho %de ano de idade.\ n ", p.nome, p.idade)

Func (S *Student) Study ()
fmt.Printf ("%s está estudando.\ n ", S.nome)

func (professor t *teach)
fmt.Printf ("%s está ensinando.\ n ", t.nome)

func main ()
s: = aluno pessoa name: "kash", idade: 24, 1001
t: = professor pessoa name: "sam", idade: 30, 2001
s.introduzir()
s.estudar()
t.introduzir()
t.ensinar()

No exemplo acima, definimos uma estrutura de pessoa e duas outras estruturas, aluno e professor, que incorporam a estrutura da pessoa. Também definimos métodos Introduce (), Study () e Teach () sobre as estruturas de pessoa, aluno e professor, respectivamente.

Em Main (), criamos novas instâncias de aluno e professor e demonstramos como podemos acessar os campos e métodos da estrutura da pessoa incorporada, bem como os métodos específicos para cada estrutura.

Conclusão

A herança é um conceito essencial na programação orientada a objetos, e Golang fornece suporte para herança única por meio de incorporação de estrutura. Para herança múltipla em Golang, o método de composição é usado. Este artigo abrange como podemos alcançar a herança usando o método de composição em Golang. Para mais detalhes sobre a herança em Golang, leia o artigo.