Sobes.tech
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!
}