SlideShare una empresa de Scribd logo
1 de 15
Clases abstractas
e interfaces
POLIMORFISMO
ING. ROBERTO MARTÍNEZ ROMÁN - RMROMAN@ITESM.MX
Clases abstractas
ING. ROBERTO MARTÍNEZ ROMÁN - RMROMAN@ITESM.MX
Para declarar un método abstracto en una clase,
agrega el modificador abstract y reemplaza el
cuerpo del método con ;
public abstract void leer();
public abstract String generarPago();
Agregue a la clase el modificador abstract.
Clases abstractas
ING. ROBERTO MARTÍNEZ ROMÁN - RMROMAN@ITESM.MX
Tome en cuenta lo siguiente:
•Las subclases de una clase abstracta, deben
sobreescribir todos los métodos abstractos de la
superclase (si no, deben declararse abstractas)
•No se pueden crear instancias de una clase
abstracta.
•Proporciona recursos para la subclase y
declaración de métodos que pueden ser usados
por el polimorfismo.
La clase abstracta Animal
public abstract class Animal // NO se puede instanciar
{
protected String comida;
private int hambre; // [0, 5], 0 no tiene hambre
public Animal(String comida, int hambre) {
this.comida = comida;
this.hambre = hambre;
}
public abstract void hablar(); // Obliga a la subclase a sobrescribir este método
public void comer() {
if (hambre>0) {
hambre--;
}
}
ING. ROBERTO MARTÍNEZ ROMÁN - RMROMAN@ITESM.MX
Interfaces
ING. ROBERTO MARTÍNEZ ROMÁN - RMROMAN@ITESM.MX
• Las interfaces, son como clases abstractas puras.
• Contiene únicamente datos estáticos constantes y
métodos abstractos públicos.
• Una clase 'implementa' una interface, más que
extenderla.
• Decimos que la clase implementa la interface si
sobrescribe todos los métodos definidos en esta
última.
Equivalencia de clases e interfaces
ING. ROBERTO MARTÍNEZ ROMÁN - RMROMAN@ITESM.MX
public abstract class ClaseAbstr
{
public static final int M=10;
public abstract void a();
}
public interface Equivalente
{
int M=10;
void a();
}
Una clase abstracta pura. No hay variables
de instancia y sólo hay métodos
abstractos.
Una interface define SOLO datos
estáticos constantes públicos y
métodos abstractos públicos.
Implementado interfaces
ING. ROBERTO MARTÍNEZ ROMÁN - RMROMAN@ITESM.MX
public abstract class ClaseAbstr
{
public static final int M=10;
public abstract void a();
}
public interface Equivalente
{
public static final int M=10;
public abstract void a();
}
public class A extends ClaseAbstr
{
public void a() { ... }
}
public class B implements Equivalente
{
public void a() { ... }
}
Diagrama UML para interfaces
ING. ROBERTO MARTÍNEZ ROMÁN - RMROMAN@ITESM.MX
Interfaces
ING. ROBERTO MARTÍNEZ ROMÁN - RMROMAN@ITESM.MX
Podemos declarar referencias del tipo de la
interface (pero nunca crear objetos de ella) y
asignar objetos de las clases que la implementan,
con esto logramos el polimorfismo.
FormaGeometrica figura;
figura = new Forma2D();
figura.area(); // polimorfismo
figura = new Forma3D();
figura.area(); // polimorfismo
Jerarquías de clases e interfaces
ING. ROBERTO MARTÍNEZ ROMÁN - RMROMAN@ITESM.MX
Las interfaces extienden interfaces, las clases
extienden clases y las clases implementan interfaces
public interface A
{
…
}
public interface B extends A
{
…
}
public class C implements A, B
{
…
// Obligado a sobrescribir
// los métodos de A y B
}
public class D extends C
{
…
}
public class E extends D
implements A, B
{
…
}
Jerarquías de clases e interfaces
ING. ROBERTO MARTÍNEZ ROMÁN - RMROMAN@ITESM.MX
Las clases pueden implementar múltiples interfaces,
pero sólo pueden heredar de una clase.
Boton Dibujable
Oprimible
BotonMenu
Clases e interfaces
La superclase define lo que es la subclase.
La interface define lo que puede hacer (el rol que juega) la subclase.
public class JuegoAhorcado extends JFrame implements ActionListener
{
}
public class Moneda extends Item implements Recolectable
{
}
ING. ROBERTO MARTÍNEZ ROMÁN - RMROMAN@ITESM.MX
Tarea
Terminar el ejercicio iniciado en clase (Figura, IFigura, Circulo):
Agregar:
1. Triángulo
2. Rectángulo
Implementar una interfaz gráfica que permita:
1. Agregar una figura de los tres tipos
2. Mover TODAS las figuras al mismo tiempo
3. Escalar todas las figuras al mismo tiempo
ING. ROBERTO MARTÍNEZ ROMÁN - RMROMAN@ITESM.MX
Segunda parte de la práctica
sobre Cuentas de Banco
Agrega a la clase de prueba PruebaCuentas, los siguientes métodos para
procesar cuentas:
 mostrarDatos. Imprime el saldo de la cuenta que llega como
parámetro.
private static void mostrarDatos(CuentaBanco cuenta){}
 hacerCorteMensual. Actualiza la cuenta que llega como parámetro,
agregando los intereses ganados o cobrando la comisión por las
operaciones efectuadas.
private static void hacerCorteMensual(CuentaBanco cuenta){}
ING. ROBERTO MARTÍNEZ ROMÁN - RMROMAN@ITESM.MX
Ejercicio. Implementa el siguiente
diagrama.
ING. ROBERTO MARTÍNEZ ROMÁN - RMROMAN@ITESM.MX

Más contenido relacionado

Similar a Clases abstractas e interfaces - Polimorfismo

Similar a Clases abstractas e interfaces - Polimorfismo (20)

Clases abstractas e interfaces
Clases abstractas e interfacesClases abstractas e interfaces
Clases abstractas e interfaces
 
Benalcazar esteban
Benalcazar estebanBenalcazar esteban
Benalcazar esteban
 
Alejandro Merizalde
Alejandro MerizaldeAlejandro Merizalde
Alejandro Merizalde
 
Laboratorio interfaces
Laboratorio interfacesLaboratorio interfaces
Laboratorio interfaces
 
Interfaces en java
Interfaces en javaInterfaces en java
Interfaces en java
 
Net1 oop vbnet
Net1 oop vbnetNet1 oop vbnet
Net1 oop vbnet
 
09 Clases Abstractas E Interfaces
09   Clases Abstractas E Interfaces09   Clases Abstractas E Interfaces
09 Clases Abstractas E Interfaces
 
Programacion 3 unidad ii
Programacion 3   unidad iiProgramacion 3   unidad ii
Programacion 3 unidad ii
 
Programacion 3 unidad ii
Programacion 3   unidad iiProgramacion 3   unidad ii
Programacion 3 unidad ii
 
Interfaces en java
Interfaces en javaInterfaces en java
Interfaces en java
 
03 java poo_parte_2
03 java poo_parte_203 java poo_parte_2
03 java poo_parte_2
 
Polimorfismo ppt
Polimorfismo  pptPolimorfismo  ppt
Polimorfismo ppt
 
Clases abstractas interfaces
Clases abstractas interfacesClases abstractas interfaces
Clases abstractas interfaces
 
Clases abstractas
Clases abstractasClases abstractas
Clases abstractas
 
JAVA_BASICO_modo_consola_introduccion.pptx
JAVA_BASICO_modo_consola_introduccion.pptxJAVA_BASICO_modo_consola_introduccion.pptx
JAVA_BASICO_modo_consola_introduccion.pptx
 
4 unidad polimorfismo
4 unidad polimorfismo4 unidad polimorfismo
4 unidad polimorfismo
 
Clases abstractas e interfaces en java
Clases abstractas e interfaces en javaClases abstractas e interfaces en java
Clases abstractas e interfaces en java
 
Clases abstractas e interfaces en java
Clases abstractas e interfaces en javaClases abstractas e interfaces en java
Clases abstractas e interfaces en java
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 

Clases abstractas e interfaces - Polimorfismo

  • 1. Clases abstractas e interfaces POLIMORFISMO ING. ROBERTO MARTÍNEZ ROMÁN - RMROMAN@ITESM.MX
  • 2. Clases abstractas ING. ROBERTO MARTÍNEZ ROMÁN - RMROMAN@ITESM.MX Para declarar un método abstracto en una clase, agrega el modificador abstract y reemplaza el cuerpo del método con ; public abstract void leer(); public abstract String generarPago(); Agregue a la clase el modificador abstract.
  • 3. Clases abstractas ING. ROBERTO MARTÍNEZ ROMÁN - RMROMAN@ITESM.MX Tome en cuenta lo siguiente: •Las subclases de una clase abstracta, deben sobreescribir todos los métodos abstractos de la superclase (si no, deben declararse abstractas) •No se pueden crear instancias de una clase abstracta. •Proporciona recursos para la subclase y declaración de métodos que pueden ser usados por el polimorfismo.
  • 4. La clase abstracta Animal public abstract class Animal // NO se puede instanciar { protected String comida; private int hambre; // [0, 5], 0 no tiene hambre public Animal(String comida, int hambre) { this.comida = comida; this.hambre = hambre; } public abstract void hablar(); // Obliga a la subclase a sobrescribir este método public void comer() { if (hambre>0) { hambre--; } } ING. ROBERTO MARTÍNEZ ROMÁN - RMROMAN@ITESM.MX
  • 5. Interfaces ING. ROBERTO MARTÍNEZ ROMÁN - RMROMAN@ITESM.MX • Las interfaces, son como clases abstractas puras. • Contiene únicamente datos estáticos constantes y métodos abstractos públicos. • Una clase 'implementa' una interface, más que extenderla. • Decimos que la clase implementa la interface si sobrescribe todos los métodos definidos en esta última.
  • 6. Equivalencia de clases e interfaces ING. ROBERTO MARTÍNEZ ROMÁN - RMROMAN@ITESM.MX public abstract class ClaseAbstr { public static final int M=10; public abstract void a(); } public interface Equivalente { int M=10; void a(); } Una clase abstracta pura. No hay variables de instancia y sólo hay métodos abstractos. Una interface define SOLO datos estáticos constantes públicos y métodos abstractos públicos.
  • 7. Implementado interfaces ING. ROBERTO MARTÍNEZ ROMÁN - RMROMAN@ITESM.MX public abstract class ClaseAbstr { public static final int M=10; public abstract void a(); } public interface Equivalente { public static final int M=10; public abstract void a(); } public class A extends ClaseAbstr { public void a() { ... } } public class B implements Equivalente { public void a() { ... } }
  • 8. Diagrama UML para interfaces ING. ROBERTO MARTÍNEZ ROMÁN - RMROMAN@ITESM.MX
  • 9. Interfaces ING. ROBERTO MARTÍNEZ ROMÁN - RMROMAN@ITESM.MX Podemos declarar referencias del tipo de la interface (pero nunca crear objetos de ella) y asignar objetos de las clases que la implementan, con esto logramos el polimorfismo. FormaGeometrica figura; figura = new Forma2D(); figura.area(); // polimorfismo figura = new Forma3D(); figura.area(); // polimorfismo
  • 10. Jerarquías de clases e interfaces ING. ROBERTO MARTÍNEZ ROMÁN - RMROMAN@ITESM.MX Las interfaces extienden interfaces, las clases extienden clases y las clases implementan interfaces public interface A { … } public interface B extends A { … } public class C implements A, B { … // Obligado a sobrescribir // los métodos de A y B } public class D extends C { … } public class E extends D implements A, B { … }
  • 11. Jerarquías de clases e interfaces ING. ROBERTO MARTÍNEZ ROMÁN - RMROMAN@ITESM.MX Las clases pueden implementar múltiples interfaces, pero sólo pueden heredar de una clase. Boton Dibujable Oprimible BotonMenu
  • 12. Clases e interfaces La superclase define lo que es la subclase. La interface define lo que puede hacer (el rol que juega) la subclase. public class JuegoAhorcado extends JFrame implements ActionListener { } public class Moneda extends Item implements Recolectable { } ING. ROBERTO MARTÍNEZ ROMÁN - RMROMAN@ITESM.MX
  • 13. Tarea Terminar el ejercicio iniciado en clase (Figura, IFigura, Circulo): Agregar: 1. Triángulo 2. Rectángulo Implementar una interfaz gráfica que permita: 1. Agregar una figura de los tres tipos 2. Mover TODAS las figuras al mismo tiempo 3. Escalar todas las figuras al mismo tiempo ING. ROBERTO MARTÍNEZ ROMÁN - RMROMAN@ITESM.MX
  • 14. Segunda parte de la práctica sobre Cuentas de Banco Agrega a la clase de prueba PruebaCuentas, los siguientes métodos para procesar cuentas:  mostrarDatos. Imprime el saldo de la cuenta que llega como parámetro. private static void mostrarDatos(CuentaBanco cuenta){}  hacerCorteMensual. Actualiza la cuenta que llega como parámetro, agregando los intereses ganados o cobrando la comisión por las operaciones efectuadas. private static void hacerCorteMensual(CuentaBanco cuenta){} ING. ROBERTO MARTÍNEZ ROMÁN - RMROMAN@ITESM.MX
  • 15. Ejercicio. Implementa el siguiente diagrama. ING. ROBERTO MARTÍNEZ ROMÁN - RMROMAN@ITESM.MX