Home Artigos Orientação a objetos e herança em Go

Orientação a objetos e herança em Go

0
1
986

Go não tem suporte à orientação a objetos típica das outras linguagens como Java ou C++. Não existem classes, apenas structs e interfaces. Sendo assim também não existe o conceito tradicional de herança. No entanto, é possível “estender” uma struct a incorporando (embedding) em outra struct. Isso é feito adicionando uma variável de instância sem nome. A struct “pai” pode chamar qualquer um dos métodos de sua struct de instância sem prefixar um nome e todas as instâncias da struct pai podem chamar os métodos “embedados”. Isso permite a extensão através da composição, ao mesmo tempo que permite a reutilização de métodos entre structs. Veja um exemplo:

package main

import (
 "fmt"
)

type Animal struct{}

func (a Animal) Comer() {
 fmt.Println("Comendo")
}

type MembroFamilia struct{}

func (fm MembroFamilia) Nome() {
 fmt.Println("Meu nome não é Johnny")
}

type Cachorro struct {
 Animal // Struct incorporada/embedada
 MembroFamilia // Struct incorporada/embedada
}

func main() {
 d := Cachorro{}
 d.Comer() // Printa "Comendo"
 d.Nome() // Printa "Meu nome não é Johnny"
}

Veja em ação aqui: https://play.golang.org/p/ukll8FI3Xk

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Veja Também

Um guia de boas práticas de segurança para desenvolvimento em Go

Confira este livro on-line gratuito sobre boas práticas de segurança de desenvolvimento pa…