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.