Mostrando entradas con la etiqueta herencia. Mostrar todas las entradas
Mostrando entradas con la etiqueta herencia. Mostrar todas las entradas

miércoles, 15 de julio de 2026

Día 16 — Herencia: reutilizando y extendiendo clases

La herencia permite crear una nueva clase a partir de otra ya existente, heredando automáticamente todos sus atributos y métodos. La clase que hereda se llama "clase hija", y la original "clase padre". Esto evita duplicar código cuando varias clases comparten comportamiento común.

Además, la clase hija puede sobreescribir cualquier método heredado para darle un comportamiento distinto, una técnica conocida como polimorfismo. Este concepto es la base de frameworks tan populares como Django, donde casi todo se construye a partir de clases que heredan funcionalidad predefinida.

Código de ejemplo:

class Animal: def __init__(self, nombre): self.nombre = nombre def hablar(self): return "..." class Perro(Animal): def hablar(self): return f"{self.nombre} dice: ¡Guau!" class Gato(Animal): def hablar(self): return f"{self.nombre} dice: ¡Miau!" rex = Perro("Rex") print(rex.hablar()) # Rex dice: ¡Guau!




domingo, 8 de junio de 2025

🧪 Python Nivel 2 – Parte 3: Herencia en Programación Orientada a Objetos

En esta lección aprenderás a reutilizar código mediante herencia, un pilar clave de la Programación Orientada a Objetos (POO). Te permitirá crear estructuras organizadas y extender clases de forma eficiente.


✅ ¿Qué es la herencia?

La herencia permite que una clase hija herede atributos y métodos de una clase padre. Así se puede reutilizar código y especializar comportamientos sin partir de cero.


🔧 Ejemplo 1: Clase base y subclases


class Animal: def __init__(self, nombre): self.nombre = nombre def hablar(self): print(f"{self.nombre} hace un sonido.") class Perro(Animal): def hablar(self): print(f"{self.nombre} dice: ¡Guau!") class Gato(Animal): def hablar(self): print(f"{self.nombre} dice: Miau.")

perro = Perro("Rex") gato = Gato("Michi") perro.hablar() gato.hablar()

🧠 Aprendiste:

  • Cómo una clase hija sobrescribe métodos

  • Que las clases hijas heredan atributos y métodos automáticamente


🔧 Ejemplo 2: Constructor extendido con super()


class Vehiculo: def __init__(self, marca, modelo): self.marca = marca self.modelo = modelo class Coche(Vehiculo): def __init__(self, marca, modelo, puertas): super().__init__(marca, modelo) self.puertas = puertas def mostrar_info(self): print(f"{self.marca} {self.modelo}, {self.puertas} puertas")

coche = Coche("Toyota", "Yaris", 5) coche.mostrar_info()

🧠 Aprendiste:

  • A reutilizar el constructor de la clase padre con super()

  • A añadir nuevos atributos en la subclase


🚀 ¿Qué aprendiste hoy?

✔️ Crear jerarquías de clases
✔️ Reutilizar y extender código
✔️ Especializar comportamientos en subclases
✔️ Aplicar el principio DRY (Don’t Repeat Yourself)


📂 Código completo en GitHub:
github.com/josecodetech

🎥 Video paso a paso en YouTube:
https://www.youtube.com/watch?v=LkxQBDnQIT0

💬 ¿Te gustaría ver un ejemplo real usando herencia para usuarios, productos o personajes de un juego? ¡Coméntalo!



sábado, 5 de junio de 2021

Clases en Python

 



class Vehiculo:
    def __init__(self, color, velocidadMaxima, marca):
        self.color = color
        self.velocidadMaxima = velocidadMaxima
        self.velocidad = 0
        self.marca = marca

    def arrancar(self):
        print('Arrancado')

    def acelerar(self):
        if self.velocidad == 0:
            self.velocidad = 10
        else:
            self.velocidad = self.velocidad + 10
        print(f"Velocidad = {self.velocidad}")

    def frenar(self):
        if self.velocidad > 10:
            self.velocidad = self.velocidad - 10
        else:
            self.velocidad = 0
        print(f"Velocidad = {self.velocidad}")

    def muestraEstado(self):
        print(
            f"Soy de la marca {self.marca}, con un color {self.color} y velocidad maxima de {self.velocidadMaxima}")


class Moto(Vehiculo):
    def __init__(self, color, velocidaMaxima, marca, ruedas=2):
        Vehiculo.__init__(self, color, velocidaMaxima, marca)
        self.ruedas = ruedas

    def muestraEstado(self):
        print(
            f"Soy de la marca {self.marca}, con un color {self.color},\n velocidad maxima de {self.velocidadMaxima} y tengo {self.ruedas} ruedas")


class Coche(Vehiculo):
    def __init__(self, color, velocidaMaxima, marca, ruedas=4):
        Vehiculo.__init__(self, color, velocidaMaxima, marca)
        self.ruedas = ruedas

    def muestraEstado(self):
        print(
            f"Soy de la marca {self.marca}, con un color {self.color},\n velocidad maxima de {self.velocidadMaxima} y tengo {self.ruedas} ruedas")


peugeot = Coche('rojo', 120, 'Peugeot', 4)
peugeot.arrancar()
peugeot.acelerar()
peugeot.muestraEstado()
peugeot.acelerar()
renault = Coche('verde', 130, 'Renault', 4)
renault.arrancar()
renault.acelerar()
renault.acelerar()
renault.muestraEstado()
yamaha = Moto('azul', 140, 'Yamaha', 2)
yamaha.arrancar()
yamaha.acelerar()
yamaha.acelerar()
yamaha.frenar()
yamaha.muestraEstado()

viernes, 19 de abril de 2019

73 Python. Clase Padre e hija

Cuando construimos una clase que puede englobar a otras con algunas diferencias, desde estas otras clases podemos heredar de la clase padre o superclase y agregar funciones o metodos propios.
Ejemplo:

#Superclase

class uno():   

def __init__(self,nombre):       

self.nombre=nombre       

print('clase uno instanciada')

#Clase hija, hereda de la anterior

class dos(uno):   

def metodo(self):       

print('ejecuta metodo de dos')

class tres(dos):   

def metodo(self):       

print('ejecuta metodo de tres')       

super().metodo()

#instancia de clasesinstancia1=uno('uno')

print(instancia1.nombre)

instancia3=tres('tres')

print(instancia3.nombre)

instancia3.metodo()

viernes, 21 de julio de 2017

12 Java. Herencias, clases propiedades y metodos

Vemos como crear objetos de una clase hija que hereda de la clase padre, obteniendo sus propiedades y metodos generales junto con los particulares o propios de la clase hija.


El codigo java realizado con eclipse es el siguiente:

public class principal {

    public static void main(String[] args) {
       
        animal perro=new animal();
        System.out.println("El color del perro es "+perro.getColor());
        System.out.println("El tamaño del perro es "+perro.getTamaño());
        perro.setTamaño("pequeño");
        System.out.println("Ahora el tamaño del perro es "+perro.getTamaño());
        animal perro2=new animal("mediano","marron");
        System.out.println("El color del perro2 es "+perro2.getColor());
        System.out.println("El tamaño del perro2 es "+perro2.getTamaño());
        //INSTANCIAMOS LOS NUEVOS OBJETOS DE PERRO Y GATO
        perro tobby=new perro();
        gato tod=new gato();
        //datos por omision de los dos objetos
        System.out.println("El color del perro tobby es "+tobby.getColor());
        System.out.println("El tamaño del perro tobby es "+tobby.getTamaño());
        System.out.println("El color del gato tod es "+tod.getColor());
        System.out.println("El tamaño del gato tod es "+tod.getTamaño());
        //cambiamos el color del perro
        tobby.setColor("marron");
        System.out.println("El color cambiado del perro tobby es "+tobby.getColor());
        //acceso a metodos particulares de cada objeto
        tobby.muerde();
        tobby.ladra();
        tod.maulla();
        tod.araña();
        //tod.ladra(); daria error
    }

}


public class animal {
    private String tamaño;
    private String color;
    animal(){
        tamaño="grande";
        color="negro";
    }
    animal(String tamaño,String color){
        this.tamaño=tamaño;
        this.color=color;
    }
    public String getTamaño() {
        return tamaño;
    }
    public void setTamaño(String tamaño) {
        this.tamaño = tamaño;
    }
    public String getColor() {
        return color;
    }
    public void setColor(String color) {
        this.color = color;
    }
   
}


public class perro extends animal {
    void ladra(){
        System.out.println("guau!!");
    }
    void muerde(){
        System.out.println("te muerdo!!");
    }
}

public class gato extends animal {
    void maulla(){
        System.out.println("miau!!");
    }
    void araña(){
        System.out.println("te araño");
    }
}