Herencia,clases abstractas y sobrecarga de métodos

Las tres clases que heredan,los distintos tipos de empleados Clase Empleado package camera_cafe_herencia; /** * Clase que hereda de Camera_Cafe * * @author GALIA * @version 1.0 */ public class Empleado extends Camera_Cafe { /* atributos privados */ private int id_empleado; private String categoria; /* constructor */ public Empleado(String nombre, String apellidos, int edad, int id) { /* método de la clase padre */ super(nombre, apellidos, edad, id); } /* setters y getters */ /** * @return id_empleado */ public int getId_empleado() { return id_empleado; } /** * @param id_empleado */ public void setId_empleado(int id_empleado) { this.id_empleado = id_empleado; } /** * @return categoría */ public String getCategoria() { return categoria; } /** * @param categoria */ public void setCategoria(String categoria) { this.categoria = categoria; } /* métodos sobrecargados */ /* * (sin Javadoc) * * @see camera_cafe_herencia.Camera_Cafe#cotillear() */ @Override public void cotillear() { System.out.println(": los empleados propagan los rumores"); } /* * (sin Javadoc) * * @see camera_cafe_herencia.Camera_Cafe#reunion_empresa() */ @Override public void reunion_empresa() { System.out.println(": los empleados se reunen al lado de la máquina."); } /* método propio de la clase */ public void enfermar() { System.out.println("Los que se ponen malos son los empleados."); } } Clase Jefe package camera_cafe_herencia; /** * Clase que hereda de Camera_Cafe * * @author GALIA * @version 1.0 * */ public class Jefe extends Camera_Cafe { /*atributo privado*/ private int id_jefe; /* Constructor */ public Jefe(String nombre, String apellidos, int edad, int id) { /*método heredado de la clase padre*/ super(nombre, apellidos, edad, id); } /** * Void. Propio de la clase */ public void planificar_trabajo() { System.out.println("El jefe planifica el trabajo"); } /* setter y getter */ /** * @return id_jefe */ public int getId_jefe() { return id_jefe; } /** * @param id_jefe */ public void setId_jefe(int id_jefe) { this.id_jefe = id_jefe; } /*métodos sobrecargados*/ /* (sin Javadoc) * @see camera_cafe_herencia.Camera_Cafe#cotillear() */ @Override public void cotillear() { System.out .println(": El jefe no cotillea, está exponiendo argumentos."); } /* (sin Javadoc) * @see camera_cafe_herencia.Camera_Cafe#reunion_empresa() */ @Override public void reunion_empresa() { System.out.println("El jefe dirige la reunión."); } } Clase Director de marketing package camera_cafe_herencia; /** * Ejemplo sencillo de herencia y sobrecarga de métodos. Clase que hereda de * Camera_Cafe. * * @author GALIA * @version 1.0 */ public class Director_Marketing extends Camera_Cafe { private String titulacion; private int años_de_experiencia; /* constructor */ public Director_Marketing(String nombre, String apellidos, int edad, int id) { /* atributos heredados de la clase padre */ super(nombre, apellidos, edad, id); } /* setters y getters */ /** * @return titulación */ public String getTitulacion() { return titulacion; } /** * @param titulacion */ public void setTitulacion(String titulacion) { this.titulacion = titulacion; } /** * @return años_de_experiencia */ public int getAños_de_experiencia() { return años_de_experiencia; } /** * @param años_de_experiencia */ public void setAños_de_experiencia(int años_de_experiencia) { this.años_de_experiencia = años_de_experiencia; } /* * (sin Javadoc) * * @see camera_cafe_herencia.Camera_Cafe#cotillear() */ @Override public void cotillear() { System.out .println(": el Director de Marketing no cotillea ,da consejos en la reunión."); } /** * Void.Clase Director_Marketing */ public void dar_consejo() { System.out.println("Los directores de marketing dan consejos"); } /* * (sin Javadoc) * * @see camera_cafe_herencia.Camera_Cafe#reunion_empresa() */ @Override public void reunion_empresa() { System.out .println(": el Director de Marketing está reunido con el jefe."); } } Clase abstracta Camera Cafe package camera_cafe_herencia; /** * Una clase abstracta es una clase de la que nunca se pueden crear instancias: * solo sirve como superclase a otras clases. Unifica datos y operaciones de * subclases. * * @author GALIA * @version 1.0 */ public abstract class Camera_Cafe { /* atributos protegidos que heredarán las subclases, las clases hijas */ protected String nombre; protected String apellidos; protected int edad; protected int id; /** * Constructor * * @param nombre * @param apellidos * @param edad * @param id */ public Camera_Cafe(String nombre, String apellidos, int edad, int id) { super(); this.nombre = nombre; this.apellidos = apellidos; this.edad = edad; this.id = id; } /** * Void de la clase padre.Se puede heredar o no. */ public void hablar() { System.out.println(": hablando. "); } /** * Void de la clase padre.Se puede heredar o no. */ public void tomar_cafe() { System.out.println(": tomando café."); } /** * método abstracto,no se implementa en la clase abstracta pero si en la * clases hijas */ public abstract void cotillear(); /** * Void de la clase padre.Se puede heredar o no. */ public void reunion_empresa() { } /* setters y getters */ /** * @return id */ public int getId() { return id; } /** * @param id */ public void setId(int id) { this.id = id; } /** * @return nombre */ public String getNombre() { return nombre; } /** * @param nombre */ public void setNombre(String nombre) { this.nombre = nombre; } /** * @return apellidos */ public String getApellidos() { return apellidos; } /** * @param apellidos */ public void setApellidos(String apellidos) { this.apellidos = apellidos; } /** * @return edad */ public int getEdad() { return edad; } /** * @param edad */ public void setEdad(int edad) { this.edad = edad; } } Clase Main que comprueba esto. package camera_cafe_herencia; import java.util.*; /** * Clase que contiene el método main. Los objetos responden de diferente manera * a los métodos (sobrecarga). * * @author GALIA * @version 1.0 * */ public class Main { /* * ArrayList de objetos Camera_Cafe, independientemente de la clase a que * pertenezcan */ public static ArrayList<Camera_Cafe> empleados = new ArrayList<Camera_Cafe>(); public static void main(String[] args) { /* creo 5 objetos, de las tres clases diferentes */ Camera_Cafe jefe = new Jefe("Gregorio", " Antúnez", 57, 27272); Camera_Cafe empleado1 = new Empleado("Jesús", "Quesada", 35, 2); Camera_Cafe empleado2 = new Empleado("Bernardo", "Marín", 32, 3); Camera_Cafe empleado3 = new Empleado("Marimar", " Montes", 33, 4); Camera_Cafe director_marketing = new Director_Marketing("Victoria", " de la Vega", 41, 18); /* los añado al ArrayList */ empleados.add(jefe); empleados.add(empleado1); empleados.add(empleado2); empleados.add(empleado3); empleados.add(director_marketing); /* todos */ System.out.println("Toda la plantilla está tomando café\n"); /* bucle for-each, recorre el ArrayList */ for (Camera_Cafe empleado : empleados) { System.out.print(empleado.getNombre() + " " + empleado.getApellidos() + " "); /* imprime la acción que desarrolla cada objeto */ empleado.tomar_cafe(); } System.out.println(); /* todos */ System.out.println("Todos hablan\n"); for (Camera_Cafe empleado : empleados) { System.out.print(empleado.getNombre() + " " + empleado.getApellidos() + " "); empleado.hablar(); } /* todos */ System.out.println("\nSobre el cotilleo\n"); for (Camera_Cafe empleado : empleados) { System.out.print(empleado.getNombre() + " " + empleado.getApellidos() + " "); empleado.cotillear(); } /* todos */ System.out.println("\nSobre las reuniones\n"); for (Camera_Cafe empleado : empleados) { System.out.print(empleado.getNombre() + " " + empleado.getApellidos() + " "); empleado.reunion_empresa(); } /* objetos específicos, solo los que tienen definido dichos métodos */ System.out.println("\nSobre las bajas"); ((Empleado) empleado1).enfermar(); System.out.println("\nSobre los consejos"); ((Director_Marketing) director_marketing).dar_consejo(); } }
Como ejemplo he tomado Camera Café.

Be the first to comment

You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.