Harencia Java

Páginas: 9 (2094 palabras) Publicado: 30 de septiembre de 2011
class Empleado {
    String nombre;
    int numEmpleado , sueldo;

    static private int contador = 0;

    Empleado(String nombre, int sueldo) {
        this.nombre = nombre;
        this.sueldo = sueldo;
        numEmpleado = ++contador;
    }

    public void aumentarSueldo(int porcentaje) {
        sueldo += (int)(sueldo * aumento / 100);
    }

    public String toString() {        return "Num. empleado " + numEmpleado + " Nombre: " + nombre +
                " Sueldo: " + sueldo;
    }
}
class Ejecutivo extends Empleado {
    int presupuesto;
    void asignarPresupuesto(int p) {
        presupuesto = p;
    }
}
Ejecutivo jefe = new Ejecutivo( "Armando Mucho", 1000);
jefe.asignarPresupuesto(1500);
jefe.aumentarSueldo(5);
HERENCIA
característica muypotente que permite definir una clase tomando como base a otra clase ya existente. Esto es una de las bases de la reutilización de código, en lugar de copiar y pegar.
En java, como ya vimos la herencia se especifica agregando la claúsula extends después del nombre de la clase. En la claúsula extends indicaremos el nombre de la clase base de la cuál queremos heredar.
Al heredar de una clase base,heredaremos tanto los atributos como los métodos, mientras que los constructores son utilizados, pero no heredados.

public class Taxista extends Persona {
private int nLicencia;
public void setNLicencia(int num)
{
nLicencia = num;
}
public int getLicencia()
{
return nLicencia;
}
}
Herencia en Java

La idea de la herencia es permitir la creación de  nuevas clasesbasadas en clases existentes.
Cuando heredamos de una clase existente, reusamos  (o heredamos) métodos y campos, y agregamos nuevos campos y métodos para cumplir con la situación nueva.
Cada vez que encontremos la relación "es-un" entre dos clases, estamos ante la presencia de herencia.

La clase ya existente es llamada superclass, o clase base, o clase padre.
La clase nueva es llamada subclase,clase derivada, o clase hija.

A través de la herencia podemos agregar nuevos campos, y podemos agregar o sobre montar métodos (override). Sobre montar un método es redefinirlo en la case heredada.

Estudio de ejemplos: ManagerTest.java
Destacar uso de super para invocar al constructor de la clase base y para invocar a métodos sobremontados.

Jerarquía de Herencia

Polimorfismo
En Java unavariable o nombre usado para referirse a un objeto de una clase X puede usarse para referirse a cualquier objeto de cualquier subclase de la clase X.

Por ejemplo: Si tenemos  Employee e;
e= new Employee(...); o
e= new Manager(...);
Esto también aplica a arreglos de Employee, cuyas entradas podrían referirse a instancias de cualquier subclase de Employee.
El inverso no es válido. No sepuede asignar una instancia de la superclase a un nombre para la subclase.

Esta es una forma de polimorfismo por que e puede referirse a un Employee o a un Manager.

Ligado Dinámico
    Es importante entender qué método es aplicado al invocar uno a un objeto que se puede referir a instancias de distinta clase.
Al momento de la compilación el compilador intenta resolver el método que correspondesegún su nombre y parámetro.  Si la superclase y la clase base tiene definido el mismo método ¿Cuál se llama?. Si el método en la clase declarada para la variable no es privado, static, o final, se invocará en forma dinámica. Esto es, se invocará el método definido según el objeto referenciado por el nombre y no según la declaración del nombre.  Por ello, si una clase derivada redefine el mismométodo, éste será invocado.

Casting

Cómo podemos acceder a los métodos definido en una clase derivada pero no en la base? Se debe hacer un cambio de tipo forzado.
Por ejemplo:
    Employee e= new Manager(..);
Usando e no podemos acceder a los métodos sólo presentes en Manager.
Si queremos hacerlo, usamos:
    Manager m = (Manager) e;
    Ahora sí podemos invocar todos los métodos de...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Harencia
  • Java
  • Java
  • Java
  • java
  • JAVA
  • java
  • java

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS