EJERCICIO 1 Crear la clase Figura encapsulada con las siguientes propiedades: coordenadaX y coordenadaY (ambas de tipo entero) y un método posición() que devuelva la posición de la figura. Crear las clases encapsuladas Círculo y Rectángulo heredando de la clase figura. La clase Círculo además tendrá la propiedad radio de tipo double y la clase… Seguir leyendo Ejercicios Propuestos Herencias
Categoría: JAVA
La clase OBJECT
La clase Object es la raíz de todas las clases en el lenguaje Java. Si se declara una clase sin cláusula extends, el compilador agrega automáticamente el código extends Object a la declaración, por ejemplo:
|
1 2 3 4 5 6 7 8 9 10 11 |
public class Alumno{ // Código de mi clase } // ES LO MISMO QUE: public class Alumno extends Objetc{ // Código de mi clase } |
Esto permite sobrescribir varios métodos heredados de la clase Object. A continuación se describen dos métodos importantes de Object.… Seguir leyendo La clase OBJECT
Ejemplo Herencia
Veamos un ejemplo: Clase principal persona
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
// Persona is-a Object public class Persona extends Object{ private String nombre; private int edad; private char sexo; private float altura; public Persona() { // TODO Auto-generated constructor stub } public Persona(String nombre, int edad, char sexo, float altura) { this.nombre = nombre; this.edad = edad; this.sexo = sexo; this.altura = altura; } public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public int getEdad() { return edad; } public void setEdad(int edad) { this.edad = edad; } public char getSexo() { return sexo; } public void setSexo(char sexo) { this.sexo = sexo; } public float getAltura() { return altura; } public void setAltura(float altura) { this.altura = altura; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + Float.floatToIntBits(altura); result = prime * result + edad; result = prime * result + ((nombre == null) ? 0 : nombre.hashCode()); result = prime * result + sexo; return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Persona other = (Persona) obj; if (Float.floatToIntBits(altura) != Float.floatToIntBits(other.altura)) return false; if (edad != other.edad) return false; if (nombre == null) { if (other.nombre != null) return false; } else if (!nombre.equals(other.nombre)) return false; if (sexo != other.sexo) return false; return true; } @Override public String toString() { return "Persona [nombre=" + nombre + ", edad=" + edad + ", sexo=" + sexo + ", altura=" + altura + "]"; } } |
Ahora la clase empleado que hereda de la clase persona:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
// Empleado is-a Object // Empleado is-a Persona // Se hereda todo menos los constructores y los recursos privados public class Empleado extends Persona{ private double sueldo; private int antiguedad; public Empleado() { //this(null, 0, 'v',0,0,0); super(); } public Empleado(String nombre, int edad, char sexo, float altura, double sueldo, int antiguedad ) { // Invocando al constructor de la superclase super(nombre, edad, sexo, altura); // TODO Auto-generated constructor stub this.sueldo = sueldo; this.antiguedad = antiguedad; } public double getSueldo() { return sueldo; } public void setSueldo(double sueldo) { this.sueldo = sueldo; } public int getAntiguedad() { return antiguedad; } public void setAntiguedad(int antiguedad) { this.antiguedad = antiguedad; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + antiguedad; long temp; temp = Double.doubleToLongBits(sueldo); result = prime * result + (int) (temp ^ (temp >>> 32)); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Empleado other = (Empleado) obj; if (antiguedad != other.antiguedad) return false; if (Double.doubleToLongBits(sueldo) != Double .doubleToLongBits(other.sueldo)) return false; return true; } @Override public String toString() { // TODO Auto-generated method stub return super.toString() + " Sueldo: " + sueldo + " Antieguedad : " + antiguedad ; } } |
Ahora veamos como crear y utilizar los objetos en una clase main:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
public class Principal { public static void main(String[] args) { Persona p = new Persona("Juan", 37, 'V', 1.78F); System.out.println(p); Empleado e = new Empleado("Maria", 32, 'H', 1.67F, 2500, 5); System.out.println(e); Empleado e2 = new Empleado("Maria", 32, 'H', 1.67F, 2500, 5); System.out.println(e2); // comprobar si son iguales if(e == e2){ System.out.println("Es el mismo objeto porque las direcciones de memeoria son la misma"); } if(e.equals(e2)){ System.out.println("Los obetos son iguales."); } } |
Descargar código de Ejemplo herencia
Herencia
Una de las características de la programación orientada a objetos es la herencia. El termino herencia es conocido por todos, quien no ha oído hablar de una herencia en la familia. Nosotros no vamos a heredar dinero ni propiedades pero si vamos a aprendera heredar recursos de otras clases. Observemos el diseño de las siguientes… Seguir leyendo Herencia
Polimorfismo
Según el siguiente diagrama de clases. La clase Gerente hereda de la clase Empleado y la clase Director hereda de la clase Gerente. También podemos decir que la clase Director hereda indirectamente de Empleado. RELACION IS-A Cuando utilizamos herencia se establece una relación is-a (traducido es-un). Según el diagrama anterior se establecen las siguientes relaciones:… Seguir leyendo Polimorfismo