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!
}