Sobes.tech
Junior — Middle

Explique o mecanismo e as características da herança na programação orientada a objetos.

sobes.tech IA

Resposta da IA

Na programação orientada a objetos (POO), a herança permite criar uma nova classe com base numa já existente, herdando as suas propriedades e métodos. Isto promove a reutilização de código e a organização hierárquica de objetos.

Características da herança:

  • Hierarquia de classes: a subclasse (herdeira) expande ou redefine o comportamento da superclasse (pai).
  • Polimorfismo: objetos da subclasse podem ser utilizados onde se espera um objeto da superclasse.
  • Encapsulamento: a herança não viola o princípio de ocultação de dados, mas a subclasse tem acesso aos membros protegidos e públicos da superclasse.

Em Go, não há herança direta de classes, mas existem composição e interfaces que permitem implementar padrões semelhantes.

Exemplo em Go com composição:

 type Animal struct {
    Name string
}

func (a Animal) Speak() string {
    return "..."
}

// Dog "herda" de Animal através de embedding
// e pode redefinir o método Speak

type Dog struct {
    Animal
}

func (d Dog) Speak() string {
    return "Woof!"
}

func main() {
    dog := Dog{Animal{Name: "Buddy"}}
    fmt.Println(dog.Name)      // Buddy
    fmt.Println(dog.Speak())   // Woof!
}