HERENCIA POO

16
HERENCIA

description

Programacion orientada a objetos un nuevo mundo

Transcript of HERENCIA POO

La idea básica es poder crear clases basadas en clases ya existentes.Cuando heredamos de una clase existente, estamos re-usando código (métodos y campos).

Podemos agregar métodos y variables para adaptar la clase a la nueva situación.

Java también permite consultar por la estructura de una clase (cuáles son sus métodos y variables). A esto se le llama reflexión.

La herencia la identificamos cuando encontramos la relación es-un entre la nueva clase y la ya existente. Un estudiante es una persona.La clase ya existente se le llama superclase, clase base , o clase padre.A la nueva clase se le llama subclase, clase derivada, o clase hija.

SUPER CLASE

Característica A Característica B

Característica ACaracterística A

Característica A

Característica B

Característica B

Característica B

Característica Z

Característica Y

Característica X Característica W

Clase Derivada Clase Derivada Clase Derivada

Clase Base

HERENCIA• Es la capacidad para crear nuevas clases

(descendientes) que se construyen sobre otras existentes, permitiendo que èstas les transmitan sus propiedades

• En POO la reutilizaciòn de còdigo se efectùa creando una subclase que constituye una restricciòn o extensiòn de la clase base, de la cual hereda sus propiedades.

TIPOS DE HERENCIA

Herencia Simple: Sólo puede tener un ascendiente, es decir una subclase puede heredar datos y métodos de una única clase así como añadir o quitar comportamientos de la clase base.

Herencia Múltiple: Es la prioridad de una clase de poder tener más de un ascendiente inmediato, o lo que es igual, adquirir datos y métodos de más de una clase.

JAVA NO SOPORTA LA HERENCIA MÚLTIPLE

CONCEPTOS DE HERENCIA EN JAVA

• la clase existente se denomina superclase o padre• La clase que hereda se denomina subclase, hija

extendida o derivada• En java todas las clases utilizan herencia, ya que

todas las clases se derivan de una clase raiz denominada Object

DEFINICION DE UNA SUBCLASE

-Necesita la palabra clave extends• La sintaxis :public class nombre de la clase extends clase base

Ejemplo

public class Estudiante de la clase extends Persona

EN JAVA TODAS LAS CLASES UTILIZAN HERENCIA

Todas las clases se derivan de una clase raiz denominada Object aunque esta no sea especificada

Ejecute los dos programas a continuaciòn:

public class Herencia

{ public static void main(String [ ] args)

{ System.out.println(“Programa con Herencia”);}}

_______________________________________________

Import java.lang,*;

public class Herencia extends Object{ public static void main(String [ ] args)

{ System.out.println(“Programa con Herencia”);}}

TIPOS DE HERENCIA

Figura

Círculo Rectángulo Triángulo

Rectánguloredondeado

Persona

Profesor

ProfesorUniversitario

Investigador

SIMPLE MÚLTIPLE

SUPERCLASES Y SUBCLASES

Una clase extendida hereda todos los miembros de sus superclases, excepto los constructores y finalize.

La subclase puede utilizar estos miembros, puede ocultar las variables miembro o anular (redefinir) los métodos.

La palabra reservada this, permite hacer referencia a la propia clase, mientras que la super, se utiliza para referenciar a la superclase y poder llamar a métodos de la misma.

COMÓ ESTÁ COMPUESTA UNA CLASE EXTENDIDA

Miembros de la superclase (miembros heredados).

Miembros adicionales definidos en las subclases (miembros añadidos).

CUALES SON LOS MIEMBROS QUE SE HEREDAN POR UNA SUBCLASE

Los miembros declarados como public o protected.

Aquellos miembros declarados sin especificador de acceso mientras que la subclase está en el mismo paquete que la superclase.

Las subclases no heredan un miembro de la superclases si la subclase declara un miembro con el mismo nombre.

Las subclases no heredan los miembros privados de la superclases.

MODIFICADORES

Modificador Significado

public Es accesible desde todas las otras clases.

protected Es accesible solamente desde el interior de la clase y sus subclases.

private Es accesible solamente desde el interior de la clase.

MODIFICADORESclass Persona {

private String nombre; private int edad;public Persona() {}public Persona (String n, int e) { nombre = n; edad = e; }

}class Alumno extends Persona {

private int curso; private String nivelAcademico;public Alumno (String n, int e, int c, String nivel) {

super(n, e);curso = c; nivel_academico = nivel;

}public static void main(String[] args) {

Alumno a = new Alumno("Pepe", 1, 2, "bueno");}

}

class Persona {private String nombre; private int edad;...................public String toString() { return nombre + edad; }public void setEdad(int e) { edad = e; }

}class Alumno extends Persona {

private int curso; private String nivelAcademico;...................public String toString() {

return super.toString() + curso + nivelAcademico;

}public void setCurso(int c) { curso = c; }

}