Junior — Middle
Explique el mecanismo y las características de la herencia en la programación orientada a objetos.
sobes.tech AI
Respuesta de la IA
En la programación orientada a objetos (POO), la herencia permite crear una nueva clase basada en una existente, heredando sus propiedades y métodos. Esto favorece la reutilización del código y la organización jerárquica de los objetos.
Características de la herencia:
- Jerarquía de clases: la subclase (heredera) amplía o redefine el comportamiento de la superclase (padre).
- Polimorfismo: los objetos de la subclase pueden usarse donde se espera un objeto de la superclase.
- Encapsulación: la herencia no viola el principio de ocultación de datos, pero la subclase tiene acceso a los miembros protegidos y públicos de la superclase.
En Go no existe herencia directa de clases, pero hay composición e interfaces que permiten implementar patrones similares.
Ejemplo en Go con composición:
type Animal struct {
Name string
}
func (a Animal) Speak() string {
return "..."
}
// Dog "hereda" de Animal mediante embedding
// y puede redefinir el 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!
}