Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Cosa
Medio de telecomunicacin
Medio de transporte
Vehiculo areo
Herencia en Java
Java permite definir una clase como subclase de una clase padre.
class clase_hija extends clase_padre { .......... }
Clase Padre
Clase Hija
Ejemplo de Herencia
class Polygon { protected int width, height;
Polygon #width #height +set_values()
}}
Constructores y Herencia
Cuando se declara un obj de una clase derivada, se ejecutan los conts siguiendo el orden de derivacin, es decir, primero el de la clase base, y despus los conts de las clases derivadas de arriba a abajo. Para pasar parmetros al constructor de la clase padre:
super (para1, para2, ..., paraN)
5
Ejemplo de super
class 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"); } }
Ahora bien:
Con padre slo podemos acceder a atributos y mtodos def. en la clase padre.
8
Ejemplo
class Persona { ................... } class Alumno extends Persona { ...................... public String toString() { return super.toString() + curso + nivelAcademico; } } class Profesor extends Persona { private String asignatura; public Profesor (String n, int e, String asign) { super(n, e); asignatura = asign; } public String toString() { return super.toString() + asignatura; } }
10
Polimorfismo
Una misma llamada ejecuta distintas sentencias dependiendo de la clase a la que pertenezca el objeto al que se aplica el mtodo. Supongamos que declaramos: Persona p; Podra suceder que durante la ej. del programa, p referencie a un profesor o a un alumno en distintos momentos, y Entonces:
Si p referencia a un alumno, con p.toString(), se ejecuta el toString de la clase Alumno. Si p referencia a un profesor, con p.toString(), se ejecuta el toString de la clase Profesor.
Enlace dinmico: Se decide en tiempo de ejecucin qu mtodo se ejecuta. OJO!: Sobrecarga de fs => enlace esttico (t. de compilacin).
11
Ejemplo de Polimorfismo
public static void main(String[] args) { Persona v[]=new Persona[10]; // Se introducen alumnos, profesores y personas en v for (int i=0 ; i<10; i++) /* Se piden datos al usuario de profesor, alumno o persona */ switch (tipo) { case /* profesor */: v[i] = new Profesor (.); break; case /* alumno */: v[i] = new Alumno(); break; case /* persona */: v[i] = new Persona(); break; default: /* ERROR */ } } for (int i=0 ; i<10; i++) System.out.println(v[i]); // enlace dinmico con toString() 12 }
Mtodos abstractos
Tenemos un mtodo f() aplicable a todos los objetos de la clase A.
rea de un polgono.
Para declarar un mtodo como abstracto, se pone delante la palabra reservada abstract y no define un cuerpo:
abstract tipo nombreMtodo(....);
Luego en cada subclase se define un mtodo con la misma cabecera y distinto cuerpo.
13
Clases Abstractas
Si una clase contiene al menos un mtodo abstracto, entonces es una clase abstracta. Una clase abstracta es una clase de la que no se pueden crear objetos, pero puede ser utilizada como clase padre para otras clases. Declaracin:
abstract class NombreClase { .............. }
14
alumno -curso -nivelAcademico +cambiarCurso() +toString() : String +pagoMensual() : double +mostrarAsignaturas() profesor -asignatura +toString() : String
15
16
17
19
Interfaces
Podra suceder que los objetos de varias clases compartan la capacidad de ejecutar un cierto conjunto de operaciones. Y dependiendo de la clase de objeto, cada operacin se realice de diferente manera. Ejemplo:
Clases: Circulo, Elipse, Triangulo, .... Todas esas clases incluyen los mtodos: rea, perimetro, cambiarEscala, etc.
Podramos definir una interfaz comn que agrupe todos los mtodos comunes (como mtodos abstractos). Y luego definir varias clases de modo que implementen una misma interfaz.
20
Ejemplo de Interfaz
public interface Figura { abstract double area(); abstract double perimetro(); } public class Circulo implements Figura { private double radio; private static double PI=3.1416; .............. public double area() { return PI*radio*radio; } public double perimetro() { return 2*PI*radio; } } public class Cuadrado implements Figura { private double lado; .............. public double area() { return lado*lado; } public double perimetro() { return 4*lado; } }
21
Ejemplo de Interfaz
Una interfaz puede incluir tambin definiciones de constantes a parte de mtodos abstractos. Una misma clase puede implementar ms de una interfaz Herencia mltiple de interfaces Se pueden crear jerarquas de interfaces (con extends!!). Se pueden declarar referencias a objetos que implementen una cierta interfaz.
double totalArea(Figura v[]) { double t=0; for (int i=0; i<v.length; i++) t += v[i].area(); // enlace dinmico return t; }
22
Jerarqua de Excepciones
26
28
29