You are on page 1of 25

Programacin

Orientada a Objetos
Clase 11
Interfaces, Herencia y
Clases Abstractas
Grupo 501

Universidad de Xalapa

perez.castro.nancy@gmail.com

Interface
Una interface en Java es un modelo de
una clase.La interface se caracteriza por
tener constantes y mtodos abstractos.
Una interface representa una relacin de
tipo es-un(a).

perez.castro.nancy@gmail.com

Caractersticas de una Interface


1. En el encabezado se usa la palabra clave interface en
lugar de class o abstract class.
2. Todo mtodo es abstracto y pblico sin necesidad de
declararlo.
3. Una interface en Java no implementa ninguno de los
mtodos que declara: ninguno de sus mtodos tiene
cuerpo.
4. Las Interfaces no tienen ningn constructor.
5. Un interfaz solo admite campos de tipo public static
final, Recordemos que static equivala a de clase y
final a constante.
6. Una clase puede derivar de un interface de la misma
manera en que puede derivar de otra clase.
perez.castro.nancy@gmail.com

Por qu una Interface?


Hay tres razones principales por las que
se recomienda hacer uso de Interfaces:
Son usadas para lograr abstraccin absoluta.
A travs de la interfaz se puede lograr la
herencia mltiple.
Se puede usar para lograr el acoplamiento
dbil

perez.castro.nancy@gmail.com

Sintaxis Interface
acceso interface NombreInterface
{
constante 1 ;
...
constante n ;
tipo 1 nombreMetodo 1 (argumentos);
...
tipo n nombreMetodo n (argumentos);
En interface todos los mtodos
}
declarados son, de manera predeterminada, pblicos y abstractos; por ello
no est permitido precederlos de
modificadores.
perez.castro.nancy@gmail.com

Uso de Interface
class NombreClase implements NombreInterfaz
{
//
definicin de atributos
//
implementacin de mtodos de la clase
//
implementacin de mtodos del interfaz
}

perez.castro.nancy@gmail.com

Ejemplo Interface
interface imprenta{
void print();
}
public class A6 implements imprenta{
public static void main(String args[]){
A6 obj = new A6();
obj.print();
}
public void print(){
System.out.println("Hello");
}
}

perez.castro.nancy@gmail.com

Uso de Interfaz
Si una clase implementa una Interface todas
sus clases derivadas heredan los mtodos
implementados en la clase base y las
constantes definidas en la interfaz.

perez.castro.nancy@gmail.com

Herencia
La herencia o relacin es-un, es la
relacin existente entre dos clases. Una
clase deriva de una clase ya existente que
se denomina clase base.
Por ejemplo, si existe una clase Figura y
se desea crear una clase Triangulo, sta
ltima puede derivarse de la primera, ya
que tendrn en comn un estado y un
comportamiento.
Triangulo es-un tipo de Figura.
perez.castro.nancy@gmail.com

Herencia
Figura

Triangulo

Clase Base

Clase Derivada

class nombre_clase extends nombre_clase_base


class Triangulo extends Figura
perez.castro.nancy@gmail.com

10

Ejemplo Herencia

perez.castro.nancy@gmail.com

11

Ejemplo Herencia
//Clase Persona. Clase Base
public class Persona {
private String nif;
private String nombre;
public String getNif() {
return nif;
}
public void setNif(String nif) {
this.nif = nif;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
}

perez.castro.nancy@gmail.com

12

Ejemplo Herencia
//Clase Alumno. Clase derivada de Persona
public class Alumno extends Persona{
private String curso;
public String getCurso() {
return curso;
}
public void setCurso(String curso)
{
this.curso = curso;
}
}
perez.castro.nancy@gmail.com

13

Ejemplo Herencia

perez.castro.nancy@gmail.com

14

Ejemplo Herencia
La clase Alumno hereda los atributos nombre y nif de la
clase Persona y aade el atributo propio curso. Por lo
tanto:
Los atributos de la clase Alumno son nif, nombre y curso.
Los mtodos de la clase Alumno son: getNif(),
setNif(String nif), getNombre(), setNombre(String
nombre), getCurso(), setCurso(String curso).
La clase Alumno aunque hereda los atributos nif y
nombre, no puede acceder a ellos de forma directa ya
que son privados a la clase Persona. Se acceden a
travs de los mtodos heredados de la clase base.
La clase Alumno puede utilizar los componentes public y
protected de la clase Persona como si fueran propios.

perez.castro.nancy@gmail.com

15

Ejemplo Herencia
// Incorporar a clase Persona
public void leer(){
Scanner sc = new
Scanner(System.in);
System.out.print("Nif: ");
nif = sc.nextLine();
System.out.print("Nombre: ");
nombre = sc.nextLine();
}
perez.castro.nancy@gmail.com

16

Ejemplo Herencia
@Override //indica que se modifica un
mtodo heredado
public void leer(){
Scanner sc = new Scanner(System.in);
super.leer(); //se llama al mtodo
leer de Persona para leer nif y nombre
System.out.print("Curso: ");
curso = sc.nextLine(); //se lee el
curso
}

perez.castro.nancy@gmail.com

17

Constructores y Herencia
Los constructores no se heredan. Cada clase
derivada tendr sus propios constructores.
La clase base es la encargada de inicializar sus
atributos.
La clase derivada se encarga de inicializar solo
los suyos.
Cuando se crea un objeto de una clase derivada
se ejecutan los constructores en este orden:
1. Primero se ejecuta el constructor de la clase
base
2. Despus se ejecuta el constructor de la clase
derivada.
perez.castro.nancy@gmail.com

18

Constructores y Herencia

perez.castro.nancy@gmail.com

19

Clase Abstracta
Una clase abstracta es una clase que NO
se puede instanciar, es decir, no se
pueden crear objetos de esa clase.
Se disean solo para que otras clases
hereden de ella.
La clase abstracta normalmente es la raz
de una jerarqua de clases y contendr el
comportamiento general que deben tener
todas las subclases. En las clases
derivadas se detalla la implementacin.
perez.castro.nancy@gmail.com

20

Clase Abstracta
(Caractersticas)

Pueden contener cero o ms mtodos abstractos.


Pueden contener mtodos no abstractos.
Pueden contener atributos.

Todas las clases que hereden de una clase abstracta deben


implementar todos los mtodos abstractos heredados.
Si una clase derivada de una clase abstracta no implementa algn
mtodo abstracto se convierte en abstracta y tendr que declararse
como tal (tanto la clase como los mtodos que siguen siendo
abstractos).
Aunque no se pueden crear objetos de una clase abstracta, s
pueden tener constructores para inicializar sus atributos que sern
invocados cuando se creen objetos de clases derivadas.

perez.castro.nancy@gmail.com

21

Declarar clase Abstracta


[modificador] abstract class nombreClase{
.
}

perez.castro.nancy@gmail.com

22

Ejemplo

perez.castro.nancy@gmail.com

23

Ejemplo

perez.castro.nancy@gmail.com

24

Ejemplo

perez.castro.nancy@gmail.com

25

You might also like