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:
En este video creamos la clase que manejara nuestra nave, el jugador principal.
# -*- coding: utf-8 -*- """ Created on Thu Sep 6 20:46:42 2018 @author: Jose """ import pygame #heredamos de Sprite class Nave(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self)
self.imagenNave=pygame.image.load('imagenes/nave.png') #tomamos rectangulo imagen self.rect=self.imagenNave.get_rect() #la situamos en medio y abajo de la pantalla self.rect.centerx=240 self.rect.centery=690 self.velocidad=10 self.vida=True self.listaDisparo=[] def mover(self): if self.vida==True: if self.rect.left<=0: self.rect.left=0 elif self.rect.right>490: self.rect.right=490 def disparar(self): print('Disparo') def dibujar(self,superficie): superficie.blit(self.imagenNave,self.rect)
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"); } }
Como instanciar o crear objetos de clases, acceder a sus valores con "getters" y modificarlos con "setters".
Clase principal
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()); }
}
Clase animal
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; }