Golang-três recursos de herança de programação orientada a objeto
Introdução básica e diagrama esquemático da herança
A herança pode resolver a reutilização de código e tornar nossa programação mais próxima do pensamento humano.
Quando várias estruturas têm as mesmas propriedades (campos) e métodos, você pode abstrair as estruturas (como Student) dessas estruturas e definir as mesmas propriedades e métodos na estrutura.
Outras estruturas não precisam redefinir esses atributos (campos) e métodos, basta aninhar uma estrutura anônima do Student. [Desenhe um esquema]
Ou seja: em Golang, se uma estrutura estiver aninhada em outra estrutura anônima, essa estrutura poderá acessar diretamente os campos e métodos da estrutura anônima, atingindo, assim, o recurso de herança.
Gramática básica do
tipo de estrutura anônima aninhada struct Goods {
Cadeia de nome
Price int
}
tipo
Estrutura do livro { Mercadorias // Esta é uma estrutura anônima aninhada String do gravador de mercadorias
}
Caso
Melhoramos em extends01.go, usando estrutura anônima aninhada para obter herança, preste atenção aos benefícios dessa programação
tipo Estrutura do aluno { Nome string Idade int Pontuação float64 } func (aluno * Estudante) ShowInfo () { fmt.Printf ("nome do aluno =% v idade =% v nota =% v \ n", student.Name, student.Age , student.Score) } func (aluno * Estudante) SetScore (pontuação float64) { aluno.Score = pontuação } tipo Estrutura do aluno { Estudante } func (aluno * aluno) Teste () { fmt.Println ("O conteúdo do exame é diferente , Sendo testado ..... \ n ") } tipo Graduate struct { Student } func (graduado * Graduado) Testing () { fmt.Println (" O conteúdo do exame é diferente, o exame está em andamento ..... \ n ") }
A herança traz conveniência à programação
1) A reutilização do código foi aprimorada
2) A escalabilidade e a manutenção do código foram aprimoradas
Discussão aprofundada sobre herança
1) A estrutura pode usar todos os campos e métodos da estrutura anônima aninhada, ou seja, os campos e métodos com letras maiúsculas ou minúsculas podem ser usados. 【Ilustração】
2) O acesso ao campo da estrutura anônima pode ser simplificado, como mostra a figura
Resumo do código acima
(1) Quando acessamos diretamente o campo ou método por meio de b, o processo de execução é o seguinte: Por exemplo, b.Name
(2) O compilador primeiro verá se o tipo correspondente a b é Name, se houver, e chame diretamente B
Se não houver um campo Nome (3) do tipo, vá para a estrutura anônima A incorporada em B para ver se o campo Nome está declarado.Se houver, chame-o se não continuar pesquisando.Se não for encontrado, relate um erro.
3) Quando a estrutura e a estrutura anônima possuem o mesmo campo ou método, o compilador usa o princípio de acesso mais próximo para acessar.Se você deseja acessar o campo e o método da estrutura anônima, é possível distingui-lo pelo nome da estrutura anônima [exemplo]
4) A estrutura é incorporada em duas (ou mais) estruturas anônimas.Por exemplo, se duas estruturas anônimas têm os mesmos campos e métodos (ao mesmo tempo, a própria estrutura não possui campos e métodos com o mesmo nome), você deve especificar explicitamente o anonimato ao acessar Nome da estrutura, caso contrário, compile o erro. 【Ilustração】
5) Se uma estrutura aninha uma estrutura nomeada, esse padrão é uma combinação.Se for um relacionamento de combinação, ao acessar os campos ou métodos da estrutura combinada, você deve trazer o nome da estrutura
6) Estrutura anônima aninhada Após o corpo, você também pode especificar diretamente o valor de cada campo de estrutura anônimo ao criar a variável de estrutura (instância)
tO campo anônimo da estrutura de prática é o tipo de dados básico, como acessá-lo, o que o código a seguir gera
Explicação
1) Se uma estrutura possui um campo anônimo do tipo int, não pode ser o segundo.
2) Se você precisar ter vários campos int, deverá especificar um nome para o campo int
Programação orientada a objeto - herança
múltipla Descrição de herança múltipla
Se uma estrutura aninha várias estruturas anônimas, a estrutura pode acessar diretamente os campos e métodos da estrutura anônima aninhada, obtendo assim herança múltipla.
Demonstração de caso
por meio de um caso para ilustrar o uso de herança múltipla
Detalhes da herança múltipla
1) Se a estrutura anônima incorporada tiver o mesmo nome de campo ou nome do método, ela precisará ser distinguida pelo nome do tipo de estrutura anônima ao acessar. [Demonstração de caso]
2) Para garantir a simplicidade do código, é recomendável que você tente não usar herança múltipla