HERENCIA La herencia permite que se puedan definir nuevas clases basadas en clases existentes, lo cual facilita re-utilizar código previamente desarrollado. Si una clase deriva de otra (extends) hereda todos sus atributos y funciones. La clase derivada puede añadir nuevos atributos y funciones. En Java, a diferencia de otros lenguajes orientados a objetos, una clase sólo puede derivar de una única clase, con lo cual no es posible realizar herencia múltiple en base a clases. Ej. En el siguiente ejemplo tenemos 3 clases, una superclase (class Empleado) y dos subclases (class Administrativo y class Docente). Que derivan de la superclase Empleado. Las clases derivadas pueden tener otros atributos y funciones además de las que heredan como se muestra en el siguiente ejemplo Empleado Administrativo Ejemplo // SUPERCLASE Empleado class Empleado { private String nombre; private int edad; Empleado(String n,int e) { nombre=n; edad=e; } void setEdad(int e) { Edad=e; } void setNombre(String n) { Nombre=n; } String getNombre() { ` return nombre; } int getEdad() { return edad; } } superclase Docente subclases // la CLASE EXTENDIDA Docente, hereda todos los atributos y funciones de la clase Empleado class Docente extends Empleado { Docente(String x,int y) { super(x,y); } } La clase Docente como hereda todo de la clase Empleado, tiene todos los atributos y funciones de la clase Empleado, sin necesidad de declararlos nuevamente. Pero, si debe declararse su constructor Y llamar al constructor de la superclase //la CLASE EXTENDIDA Administrativo, hereda todas los atributos y funciones de la clase Empleado, además //se le añade un nuevo atributo que es cargo class Administrativo extends Empleado { private String cargo; Administrativo(String n,int e,String c) { super(n,e); cargo=c; } void setCargo(String c) { Cargo=c; } String getCargo() { return cargo; } Además de heredar todas los atributos y funciones de la clase Empleado, la clase Administrativo tiene una nueva variable cargo La palabra super hace referencia a variables o funciones de la superclase Empleado. En este caso llama al constructor de la superclase } //El programa donde se crean los objetos Administrativo y Docente class prueba { public static void main(String args[]) { Docente doc=new Docente("Carlos Sanchez",32); System.out.print(doc.getNombre()); System.out.print(doc.getEdad()); Como se ve el objetos doc y admin tienen todas los atributos y funciones de la clase heredada Empleado Administrativo admi=new Administrativo("Juan Perez",20,"cajero"); System.out.print(admi.getNombre()); System.out.print(admi.getEdad()); System.out.print(admin.getCargo()); } } EJERCICIO PARA PRACTICAR En una tienda se vende 2 productos, monitores e impresoras de computadoras, para ambos productos se guarda información común como: código y precio. Las impresoras además tienen información de tipo de impresora y los monitores el tamaño en pulgadas. - Realice las clases Producto (superclase), Monitor e Impresora (sub clases) (utilice constructores, herencia y todos los atributos de las clases deben ser privados) - Realice una clase de prueba donde realice las siguientes acciones: - Crear un objeto m1 de la clase Monitor. - Crear un objeto m2 de la clase Monitor. - Crear un objeto imp1 de la clase Impresora. - Modifique el precio de m1 - Visualice el código de m2 - Modifique el tipo de imp1