SlideShare une entreprise Scribd logo
1  sur  41
MÓDULO 3 INTRODUCCIÓN A JAVA 3.9 CLASES ABSTRACTAS E INTERFACES 40 HORAS Jesús Muñoz jesus@iluego.com
Contenidos tema 3 – Introducción a Java Comenzamos Bases del lenguaje Java Programación Orientada a Objetos (OOP) Clases y objetos Creando clases Paquetes y java classpath Javabeans Herencia Clases abstractas e interfaces Polimorfismo Clases internas Excepciones Logging Networking 2
3 Contenidos de este tema Clases abstractas e interfaces Métodos abstractos Clases abstractas Cuándo usar clases abstractas Qué es un interface Por qué usar un interface Interface vs. clase abstracta Interface como type Interface vs. class Implementando interfaces Implementando múltiples interfaces Herencia en interfaces Interfaces y polimorfismo Reescribiendo interfaces Ejemplo
4 Contenidos de este tema Clases abstractas e interfaces Métodos abstractos Clases abstractas Cuándo usar clases abstractas Qué es un interface Por qué usar un interface Interface vs. clase abstracta Interface como type Interface vs. class Implementando interfaces Implementando múltiples interfaces Herencia en interfaces Interfaces y polimorfismo Reescribiendo interfaces Ejemplo
5 Métodos abstractos Son métodos que no están implementados (body) Para crear un método abstracto sólo es necesaria la declaración del método sin el cuerpo (body) y usando la palabra reservada abstract // Note that there is no body public abstract void someMethod();
6 Contenidos de este tema Clases abstractas e interfaces Métodos abstractos Clases abstractas Cuándo usar clases abstractas Qué es un interface Por qué usar un interface Interface vs. clase abstracta Interface como type Interface vs. class Implementando interfaces Implementando múltiples interfaces Herencia en interfaces Interfaces y polimorfismo Reescribiendo interfaces Ejemplo
7 Clases abstractas Una clase abstracta es una clase que contiene uno o más 	métodos abstractos Una clase abstracta no puede ser instanciada. Al compilar recibiremos un error de compilación. Otra clase ha de proveer la implementación de los métodos abstractos Una clase concreta ha de implementar todos los métodos abstractos de la clase abstracta para poder ser instanciada La clase que implementa esos métodos debe extender de ésta (extends)
8 Clases abstractas public abstract class LivingThing { public void breath(){ System.out.println("Living Thing breathing..."); } public void eat(){ System.out.println("Living Thing eating..."); } /** * Abstract method walk() * We want this method to be implemented by a * Concrete class. */ public abstract void walk(); }
9 Clases abstractas Cuando una clase concreta extiende de la clase abstracta LivingThing, debe implementar el método abstracto walk(), o en su caso, esa subclase debe ser declarada como abstracta y no podría tampoco ser instanciada. public class Human extends LivingThing { public void walk(){ System.out.println("Human walks..."); } }
10 Contenidos de este tema Clases abstractas e interfaces Métodos abstractos Clases abstractas Cuándo usar clases abstractas Qué es un interface Por qué usar un interface Interface vs. clase abstracta Interface como type Interface vs. class Implementando interfaces Implementando múltiples interfaces Herencia en interfaces Interfaces y polimorfismo Reescribiendo interfaces Ejemplo
11 Cuándo usar clases abstractas Resulta evidente en el ejemplo de la figura que los diversos tipos de motores tienen características diferentes. Realmente tienen poco en común un motor eléctrico de corriente alterna y una turbina de vapor. Sin embargo, la construcción de una jerarquía en la que todos motores desciendan de un ancestro común, la clase abstracta "Motores", presenta la ventaja de unificar la interfaz. Aunque evidentemente su definición será tan "abstracta", que no pueda ser utilizada para instanciar directamente ningún tipo de motor. El creador del lenguaje dice de ellas que soportan la noción de un concepto general del que solo pueden utilizarse variantes más concretas.
12 Contenidos de este tema Clases abstractas e interfaces Métodos abstractos Clases abstractas Cuándo usar clases abstractas Qué es un interface Por qué usar un interface Interface vs. clase abstracta Interface como type Interface vs. class Implementando interfaces Implementando múltiples interfaces Herencia en interfaces Interfaces y polimorfismo Reescribiendo interfaces Ejemplo
13 Qué es un interface Define un camino standard y público de especificar el propósito de las clases Define un contrato Todos los métodos de la interface son abstractos Define las signaturas en un conjunto de métodos, sin el cuerpo (body, implementación) Una clase concreta debe implementar la interface (todos los métodos abstractos de la interface) Permite a las clases, sin importar la localización dentro de la jerarquía de clases, el implementar los métodos comunes public interface Relation { public boolean isGreater( Object a, Object b); public boolean isLess( Object a, Object b); public boolean isEqual( Object a, Object b); }
14 Contenidos de este tema Clases abstractas e interfaces Métodos abstractos Clases abstractas Cuándo usar clases abstractas Qué es un interface Por qué usar un interface Interface vs. clase abstracta Interface como type Interface vs. class Implementando interfaces Implementando múltiples interfaces Herencia en interfaces Interfaces y polimorfismo Reescribiendo interfaces Ejemplo
15 Por qué usar un interface Para revelar el interface (la funcionalidad del objeto) sin revelar su implementación Este es el concepto de encapsulación La implementación puede cambiar sin afectar al llamador de la interface El llamador no necesita la implementación en el tiempo de compilación Sólo necesita la interface durante el tiempo de compilación Durante el tiempo de ejecución, la instancia actual está asociada con el tipo del interface Para tener métodos similares en implementaciones de clases no relacionadas Una clase no es una subclase de otra
16 Por qué usar un interface Para revelar el interface (la funcionalidad del objeto) sin revelar su implementación Este es el concepto de encapsulación La implementación puede cambiar sin afectar al llamador de la interface El llamador no necesita la implementación en el tiempo de compilación Sólo necesita la interface durante el tiempo de compilación Durante el tiempo de ejecución, la instancia actual está asociada con el tipo del interface Para tener métodos similares en implementaciones de clases no relacionadas Una clase no es una subclase de otra Para tener herencia múltiple Cada conjunto es definido como una interface Una clase sólo puede implementar  múltiples interfaces, pero sólo puede extender de una clase
17 Contenidos de este tema Clases abstractas e interfaces Métodos abstractos Clases abstractas Cuándo usar clases abstractas Qué es un interface Por qué usar un interface Interface vs. clase abstracta Interface como type Interface vs. class Implementando interfaces Implementando múltiples interfaces Herencia en interfaces Interfaces y polimorfismo Reescribiendo interfaces Ejemplo
18 Interface vs. Clase abstracta Todos los métodos de una interface son métodos abstractos, mientras que sólo algunos de los métodos son abtractos en la clase abstracta Los métodos abstractos de una clase abstracta llevan la palabra reservada abstract Un interface sólo puede definir constantes. La clase abstracta puede tener campos. Interfaces no tienen relación de herencia directa con una clase particular, están definidos independientemente Los interfaces poseen relaciones de herencia  a través de ellos mismos
19 Contenidos de este tema Clases abstractas e interfaces Métodos abstractos Clases abstractas Cuándo usar clases abstractas Qué es un interface Por qué usar un interface Interface vs. clase abstracta Interface como type Interface vs. class Implementando interfaces Implementando múltiples interfaces Herencia en interfaces Interfaces y polimorfismo Reescribiendo interfaces Ejemplo
20 Interface como type Cuando definimos un nuevo interface, estamos definiendo un nuevo tipo Podemos usar el nombre del interface en cualquier otro sitio Si definimos una variable por referencia cuyo tipo es un interface, cualquier objeto que asignemos a él será una instancia de la clase que implementa el interface (implements) Vamos a ver cómo la clase Person implementa PersonInterface: Person p1 = new Person(); PersonInterface pi1 = p1; PersonInterface pi2 = new Person();
21 Contenidos de este tema Clases abstractas e interfaces Métodos abstractos Clases abstractas Cuándo usar clases abstractas Qué es un interface Por qué usar un interface Interface vs. clase abstracta Interface como type Interface vs. class Implementando interfaces Implementando múltiples interfaces Herencia en interfaces Interfaces y polimorfismo Reescribiendo interfaces Ejemplo
22 Interface vs. Class En la práctica las interfaces y las clases son tipos Esto significa que una interface puede ser usada también en lugares donde una clase puede usarse Por ejemplo: // Recommended practice PersonInterface pi = new Person(); // Not recommended practice Person pc = new Person(); Tanto la interface como la clase, ambas, pueden definir métodos
23 Interface vs. Class DIFERENCIAS Los métodos de un interface son todos métodos abstractos No tienen cuerpo No se puede crear una instancia de una interface. Por ejemplo: PersonInterface pi = new PersonInterface(); //ERROR! Una interface sólo puede ser implementada por clases o extendida por otras interfaces
24 Interface vs. Class Definiendo una interface: public interface [InterfaceName] { 		//some methods without the body } Como ejemplo, vamos a crear un interface que define relaciones entre dos objetos acorde con el orden natural de los objetos public interface Relation { public boolean isGreater( Object a, Object b); public boolean isLess( Object a, Object b); public boolean isEqual( Object a, Object b); }
25 Contenidos de este tema Clases abstractas e interfaces Métodos abstractos Clases abstractas Cuándo usar clases abstractas Qué es un interface Por qué usar un interface Interface vs. clase abstracta Interface como type Interface vs. class Implementando interfaces Implementando múltiples interfaces Herencia en interfaces Interfaces y polimorfismo Reescribiendo interfaces Ejemplo
26 Implementando interfaces Para crear una clase concreta que implemente un interface: implements keyword. /** * Line class implements Relation interface */ public class Line implements Relation { private double x1; private double x2; private double y1; private double y2; public Line(double x1, double x2, double y1, double y2){ this.x1 = x1; this.x2 = x2; this.y1 = y1; this.y2 = y2; } // More code follows
27 Implementando interfaces public double getLength(){ double length = Math.sqrt((x2-x1)*(x2-x1) + (y2-y1)* (y2-y1)); return length; } public boolean isGreater( Object a, Object b){ double aLen = ((Line)a).getLength(); double bLen = ((Line)b).getLength(); return (aLen > bLen); } public boolean isLess( Object a, Object b){ double aLen = ((Line)a).getLength(); double bLen = ((Line)b).getLength(); return (aLen < bLen); } public boolean isEqual( Object a, Object b){ double aLen = ((Line)a).getLength(); double bLen = ((Line)b).getLength(); return (aLen == bLen); } }
28 Implementando interfaces Cuando la clase trata de implementar una interface hay que asegurarse de implementar todos los métodos de la interface. En caso contrario dará un error.
29 Contenidos de este tema Clases abstractas e interfaces Métodos abstractos Clases abstractas Cuándo usar clases abstractas Qué es un interface Por qué usar un interface Interface vs. clase abstracta Interface como type Interface vs. class Implementando interfaces Implementando múltiples interfaces Herencia en interfaces Interfaces y polimorfismo Reescribiendo interfaces Ejemplo
30 Implementando múltiples interfaces Una clase concreta: Extiende sólo de una clase Puede implementar varias interfaces public class ComputerScienceStudent extends Student implements PersonInterface, AnotherInterface, Third interface{ // All abstract methods of all interfaces // need to be implemented. }
31 Implementando múltiples interfaces Una clase concreta: Extiende sólo de una clase Puede implementar varias interfaces public class ComputerScienceStudent extends Student implements PersonInterface, AnotherInterface, Third interface{ // All abstract methods of all interfaces // need to be implemented. }
32 Contenidos de este tema Clases abstractas e interfaces Métodos abstractos Clases abstractas Cuándo usar clases abstractas Qué es un interface Por qué usar un interface Interface vs. clase abstracta Interface como type Interface vs. class Implementando interfaces Implementando múltiples interfaces Herencia en interfaces Interfaces y polimorfismo Reescribiendo interfaces Ejemplo
33 Herencia en interfaces Las interfaces no son parte de la jerarquía de clases: Sin embargo, las interfaces pueden tener relaciones de herencia entre ellas mismas: public interface PersonInterface { void doSomething(); } public interface StudentInterface extends PersonInterface { void doExtraSomething(); }
34 Contenidos de este tema Clases abstractas e interfaces Métodos abstractos Clases abstractas Cuándo usar clases abstractas Qué es un interface Por qué usar un interface Interface vs. clase abstracta Interface como type Interface vs. class Implementando interfaces Implementando múltiples interfaces Herencia en interfaces Interfaces y polimorfismo Reescribiendo interfaces Ejemplo
35 Interfaces y polimorfismo Las interfaces permiten polimorfismo, desde que pueden llamar a un método de la interface, y la versión apropiada de ese método será ejecutada dependiendo del tipo de la instancia del objeto pasado en la llamada al método de la interface
36 Contenidos de este tema Clases abstractas e interfaces Métodos abstractos Clases abstractas Cuándo usar clases abstractas Qué es un interface Por qué usar un interface Interface vs. clase abstracta Interface como type Interface vs. class Implementando interfaces Implementando múltiples interfaces Herencia en interfaces Interfaces y polimorfismo Reescribiendo interfaces Ejemplo
37 Reescribiendo interfaces Considerar un interface que hemos creado llamado DoIt: public interface DoIt { void doSomething(int i, double x); int doSomethingElse(String s); } Suponemos que, después, queremos añadir un tercer método a DoIt, de tal forma que la interface sería: public interface DoIt { void doSomething(int i, double x); int doSomethingElse(String s); boolean didItWork(int i, double x, String s); } Si hacemos este cambio, todas las clases que implementan la vieja interface DoIt no funcionará porque en este caso no implementa todos los métodos de la interface
38 Reescribiendo interfaces La solución de reescribir una interface existente: Crear más interfaces después Por ejemplo, puedes crear una DoItPlus interface que extienda de DoIt public interface DoItPlus extends DoIt { boolean didItWork(int i, double x, String s); } Ahora los usuarios pueden continuar usando la interface anterior o actualizar a la nueva interface
39 Contenidos de este tema Clases abstractas e interfaces Métodos abstractos Clases abstractas Cuándo usar clases abstractas Qué es un interface Por qué usar un interface Interface vs. clase abstracta Interface como type Interface vs. class Implementando interfaces Implementando múltiples interfaces Herencia en interfaces Interfaces y polimorfismo Reescribiendo interfaces Ejemplo
40 Ejemplo
Es importante que recordeis… “Si haces todos los días lo mismo no llegarás más lejos de lo que otras veces has llegado” Adelante!!! Jesús Muñoz jesus@iluego.com

Contenu connexe

Tendances

Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML
Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UMLUnidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML
Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UMLCindy Adriana Bohórquez Santana
 
Programación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresProgramación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresAlvaro Enrique Ruano
 
Inheritance in JAVA PPT
Inheritance  in JAVA PPTInheritance  in JAVA PPT
Inheritance in JAVA PPTPooja Jaiswal
 
Polimorfismo y Clases Abstractas
Polimorfismo y Clases AbstractasPolimorfismo y Clases Abstractas
Polimorfismo y Clases Abstractascodigosyalgomas
 
C# Interface | Interfaces In C# | C# Interfaces Explained | C# Tutorial For B...
C# Interface | Interfaces In C# | C# Interfaces Explained | C# Tutorial For B...C# Interface | Interfaces In C# | C# Interfaces Explained | C# Tutorial For B...
C# Interface | Interfaces In C# | C# Interfaces Explained | C# Tutorial For B...Simplilearn
 
Presentacion progra
Presentacion prograPresentacion progra
Presentacion prograzeta2015
 
Tipos abstractos de datos
Tipos abstractos de datosTipos abstractos de datos
Tipos abstractos de datosJose Armando
 
Abstract class and Interface
Abstract class and InterfaceAbstract class and Interface
Abstract class and InterfaceHaris Bin Zahid
 
Análisis y diseño de sistemas sesion 11 - modelo de analisis
Análisis y diseño de sistemas   sesion 11 - modelo de analisisAnálisis y diseño de sistemas   sesion 11 - modelo de analisis
Análisis y diseño de sistemas sesion 11 - modelo de analisisGianfrancoEduardoBra
 
What are Abstract Classes in Java | Edureka
What are Abstract Classes in Java | EdurekaWhat are Abstract Classes in Java | Edureka
What are Abstract Classes in Java | EdurekaEdureka!
 
Modelado Orientado a Objetos
Modelado Orientado a ObjetosModelado Orientado a Objetos
Modelado Orientado a ObjetosRafael Miranda
 

Tendances (20)

Encapsulamiento poo
Encapsulamiento pooEncapsulamiento poo
Encapsulamiento poo
 
Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML
Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UMLUnidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML
Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML
 
Programación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresProgramación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructores
 
Inheritance in JAVA PPT
Inheritance  in JAVA PPTInheritance  in JAVA PPT
Inheritance in JAVA PPT
 
P.O.O.
P.O.O.P.O.O.
P.O.O.
 
Polimorfismo en Java
Polimorfismo en JavaPolimorfismo en Java
Polimorfismo en Java
 
Polimorfismo y Clases Abstractas
Polimorfismo y Clases AbstractasPolimorfismo y Clases Abstractas
Polimorfismo y Clases Abstractas
 
Poo en java herencia
Poo en java   herenciaPoo en java   herencia
Poo en java herencia
 
C# Interface | Interfaces In C# | C# Interfaces Explained | C# Tutorial For B...
C# Interface | Interfaces In C# | C# Interfaces Explained | C# Tutorial For B...C# Interface | Interfaces In C# | C# Interfaces Explained | C# Tutorial For B...
C# Interface | Interfaces In C# | C# Interfaces Explained | C# Tutorial For B...
 
Presentacion progra
Presentacion prograPresentacion progra
Presentacion progra
 
Herencia y polimorfismo
Herencia y polimorfismoHerencia y polimorfismo
Herencia y polimorfismo
 
Clases abstractas
Clases abstractasClases abstractas
Clases abstractas
 
Tipos abstractos de datos
Tipos abstractos de datosTipos abstractos de datos
Tipos abstractos de datos
 
Abstract class and Interface
Abstract class and InterfaceAbstract class and Interface
Abstract class and Interface
 
Análisis y diseño de sistemas sesion 11 - modelo de analisis
Análisis y diseño de sistemas   sesion 11 - modelo de analisisAnálisis y diseño de sistemas   sesion 11 - modelo de analisis
Análisis y diseño de sistemas sesion 11 - modelo de analisis
 
Hilos En Java
Hilos En JavaHilos En Java
Hilos En Java
 
Java inheritance
Java inheritanceJava inheritance
Java inheritance
 
What are Abstract Classes in Java | Edureka
What are Abstract Classes in Java | EdurekaWhat are Abstract Classes in Java | Edureka
What are Abstract Classes in Java | Edureka
 
Abstract class in java
Abstract class in javaAbstract class in java
Abstract class in java
 
Modelado Orientado a Objetos
Modelado Orientado a ObjetosModelado Orientado a Objetos
Modelado Orientado a Objetos
 

En vedette

Interface Design Getting Real
Interface Design Getting RealInterface Design Getting Real
Interface Design Getting RealMiguel Rodriguez
 
Informatica basica
Informatica basicaInformatica basica
Informatica basica26122013
 
Curso Ofimàtica CIFO La Violeta 2015
Curso Ofimàtica CIFO La Violeta 2015Curso Ofimàtica CIFO La Violeta 2015
Curso Ofimàtica CIFO La Violeta 2015jmvp1968
 
Sistemas operativos procesos
Sistemas operativos   procesosSistemas operativos   procesos
Sistemas operativos procesosayreonmx
 
Aho hopcroft - estructura de datos y algoritmos p1
Aho   hopcroft - estructura de datos y algoritmos p1Aho   hopcroft - estructura de datos y algoritmos p1
Aho hopcroft - estructura de datos y algoritmos p1Emiliano Andres Abadi
 
Polimorfismo en java
Polimorfismo en javaPolimorfismo en java
Polimorfismo en javaSa_Van
 
delegacion_herencia_polimorfismo
delegacion_herencia_polimorfismodelegacion_herencia_polimorfismo
delegacion_herencia_polimorfismoJohana Añez
 
3 interfaces clases_abstractas_herencia_polimorfismo
3 interfaces clases_abstractas_herencia_polimorfismo3 interfaces clases_abstractas_herencia_polimorfismo
3 interfaces clases_abstractas_herencia_polimorfismoJesus Alberto Iribe Gonzalez
 
Mcts self paced training kit exam 432 sql server 2008 - implementation and ...
Mcts self paced training kit exam 432   sql server 2008 - implementation and ...Mcts self paced training kit exam 432   sql server 2008 - implementation and ...
Mcts self paced training kit exam 432 sql server 2008 - implementation and ...Portal_do_Estudante_SQL
 
Sql server 2012_licensing_reference_guide
Sql server 2012_licensing_reference_guideSql server 2012_licensing_reference_guide
Sql server 2012_licensing_reference_guideamenus006
 
Programación III (Java) - 03 Interfaces
Programación III (Java) - 03 InterfacesProgramación III (Java) - 03 Interfaces
Programación III (Java) - 03 InterfacesAndoni Eguíluz Morán
 
Presentacion Tic
Presentacion TicPresentacion Tic
Presentacion TicRafa Fdez.
 
Creación de archivos de clases en c#
Creación de archivos de clases en c#Creación de archivos de clases en c#
Creación de archivos de clases en c#UVM
 
Estructuras de datos osvaldo cairo
Estructuras de datos   osvaldo cairoEstructuras de datos   osvaldo cairo
Estructuras de datos osvaldo cairoYossLu Molina
 
Windows Server 2012 Exam Paper 70-411 PDF
Windows Server 2012 Exam Paper 70-411 PDFWindows Server 2012 Exam Paper 70-411 PDF
Windows Server 2012 Exam Paper 70-411 PDFKesavan Munuswamy
 

En vedette (20)

Interface Design Getting Real
Interface Design Getting RealInterface Design Getting Real
Interface Design Getting Real
 
Internet
InternetInternet
Internet
 
Informatica basica
Informatica basicaInformatica basica
Informatica basica
 
Curso Ofimàtica CIFO La Violeta 2015
Curso Ofimàtica CIFO La Violeta 2015Curso Ofimàtica CIFO La Violeta 2015
Curso Ofimàtica CIFO La Violeta 2015
 
Sistemas operativos procesos
Sistemas operativos   procesosSistemas operativos   procesos
Sistemas operativos procesos
 
Aho hopcroft - estructura de datos y algoritmos p1
Aho   hopcroft - estructura de datos y algoritmos p1Aho   hopcroft - estructura de datos y algoritmos p1
Aho hopcroft - estructura de datos y algoritmos p1
 
Polimorfismo en java
Polimorfismo en javaPolimorfismo en java
Polimorfismo en java
 
delegacion_herencia_polimorfismo
delegacion_herencia_polimorfismodelegacion_herencia_polimorfismo
delegacion_herencia_polimorfismo
 
3 interfaces clases_abstractas_herencia_polimorfismo
3 interfaces clases_abstractas_herencia_polimorfismo3 interfaces clases_abstractas_herencia_polimorfismo
3 interfaces clases_abstractas_herencia_polimorfismo
 
Mcts self paced training kit exam 432 sql server 2008 - implementation and ...
Mcts self paced training kit exam 432   sql server 2008 - implementation and ...Mcts self paced training kit exam 432   sql server 2008 - implementation and ...
Mcts self paced training kit exam 432 sql server 2008 - implementation and ...
 
Clases abstractas
Clases abstractasClases abstractas
Clases abstractas
 
Informes+con+ireport (2)
Informes+con+ireport (2)Informes+con+ireport (2)
Informes+con+ireport (2)
 
Sql server 2012_licensing_reference_guide
Sql server 2012_licensing_reference_guideSql server 2012_licensing_reference_guide
Sql server 2012_licensing_reference_guide
 
Programación III (Java) - 03 Interfaces
Programación III (Java) - 03 InterfacesProgramación III (Java) - 03 Interfaces
Programación III (Java) - 03 Interfaces
 
Swing (1)
Swing (1)Swing (1)
Swing (1)
 
Introduccion a Java
Introduccion a JavaIntroduccion a Java
Introduccion a Java
 
Presentacion Tic
Presentacion TicPresentacion Tic
Presentacion Tic
 
Creación de archivos de clases en c#
Creación de archivos de clases en c#Creación de archivos de clases en c#
Creación de archivos de clases en c#
 
Estructuras de datos osvaldo cairo
Estructuras de datos   osvaldo cairoEstructuras de datos   osvaldo cairo
Estructuras de datos osvaldo cairo
 
Windows Server 2012 Exam Paper 70-411 PDF
Windows Server 2012 Exam Paper 70-411 PDFWindows Server 2012 Exam Paper 70-411 PDF
Windows Server 2012 Exam Paper 70-411 PDF
 

Similaire à Interfaces Java clases abstractas

Similaire à Interfaces Java clases abstractas (20)

2 3 3 Interfaces
2 3 3 Interfaces2 3 3 Interfaces
2 3 3 Interfaces
 
Interfaces en java
Interfaces en javaInterfaces en java
Interfaces en java
 
4 unidad polimorfismo
4 unidad polimorfismo4 unidad polimorfismo
4 unidad polimorfismo
 
Laboratorio interfaces
Laboratorio interfacesLaboratorio interfaces
Laboratorio interfaces
 
Clases abstractas e interfaces
Clases abstractas e interfacesClases abstractas e interfaces
Clases abstractas e interfaces
 
Introducción
IntroducciónIntroducción
Introducción
 
Interfaces 14k
Interfaces 14kInterfaces 14k
Interfaces 14k
 
Interfaces
InterfacesInterfaces
Interfaces
 
Interfaces en Java
Interfaces en JavaInterfaces en Java
Interfaces en Java
 
Interfaces en Java
Interfaces en JavaInterfaces en Java
Interfaces en Java
 
Programación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismoProgramación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismo
 
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
 
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
 
manual de C#
manual de C#manual de C#
manual de C#
 
Manual c# 2
Manual c# 2Manual c# 2
Manual c# 2
 
Manual de c#
Manual de c#Manual de c#
Manual de c#
 
secme-23192.pdf
secme-23192.pdfsecme-23192.pdf
secme-23192.pdf
 
Interfaces
InterfacesInterfaces
Interfaces
 
Interfaces
InterfacesInterfaces
Interfaces
 
Clases abstractas e interfaz
Clases abstractas e interfazClases abstractas e interfaz
Clases abstractas e interfaz
 

Plus de Network Sens

Plus de Network Sens (13)

J2EE - 01 Arquitectura Web
J2EE - 01   Arquitectura WebJ2EE - 01   Arquitectura Web
J2EE - 01 Arquitectura Web
 
03 Oop
03   Oop03   Oop
03 Oop
 
13 Networking
13   Networking13   Networking
13 Networking
 
12 Logging
12   Logging12   Logging
12 Logging
 
11 Excepciones
11   Excepciones11   Excepciones
11 Excepciones
 
10 Polimorfismo
10   Polimorfismo10   Polimorfismo
10 Polimorfismo
 
08 Herencia
08   Herencia08   Herencia
08 Herencia
 
07 Javabeans
07   Javabeans07   Javabeans
07 Javabeans
 
01 - Introducción
01 - Introducción01 - Introducción
01 - Introducción
 
05 Creando Clases
05   Creando Clases05   Creando Clases
05 Creando Clases
 
06 Paquetes Y Java Classpath
06   Paquetes Y Java Classpath06   Paquetes Y Java Classpath
06 Paquetes Y Java Classpath
 
04 Clases Y Objetos
04   Clases Y Objetos04   Clases Y Objetos
04 Clases Y Objetos
 
02 Bases Del Lenguaje Java
02   Bases Del Lenguaje Java02   Bases Del Lenguaje Java
02 Bases Del Lenguaje Java
 

Dernier

El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramDIDIERFERNANDOGUERRE
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 

Dernier (20)

El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ram
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 

Interfaces Java clases abstractas

  • 1. MÓDULO 3 INTRODUCCIÓN A JAVA 3.9 CLASES ABSTRACTAS E INTERFACES 40 HORAS Jesús Muñoz jesus@iluego.com
  • 2. Contenidos tema 3 – Introducción a Java Comenzamos Bases del lenguaje Java Programación Orientada a Objetos (OOP) Clases y objetos Creando clases Paquetes y java classpath Javabeans Herencia Clases abstractas e interfaces Polimorfismo Clases internas Excepciones Logging Networking 2
  • 3. 3 Contenidos de este tema Clases abstractas e interfaces Métodos abstractos Clases abstractas Cuándo usar clases abstractas Qué es un interface Por qué usar un interface Interface vs. clase abstracta Interface como type Interface vs. class Implementando interfaces Implementando múltiples interfaces Herencia en interfaces Interfaces y polimorfismo Reescribiendo interfaces Ejemplo
  • 4. 4 Contenidos de este tema Clases abstractas e interfaces Métodos abstractos Clases abstractas Cuándo usar clases abstractas Qué es un interface Por qué usar un interface Interface vs. clase abstracta Interface como type Interface vs. class Implementando interfaces Implementando múltiples interfaces Herencia en interfaces Interfaces y polimorfismo Reescribiendo interfaces Ejemplo
  • 5. 5 Métodos abstractos Son métodos que no están implementados (body) Para crear un método abstracto sólo es necesaria la declaración del método sin el cuerpo (body) y usando la palabra reservada abstract // Note that there is no body public abstract void someMethod();
  • 6. 6 Contenidos de este tema Clases abstractas e interfaces Métodos abstractos Clases abstractas Cuándo usar clases abstractas Qué es un interface Por qué usar un interface Interface vs. clase abstracta Interface como type Interface vs. class Implementando interfaces Implementando múltiples interfaces Herencia en interfaces Interfaces y polimorfismo Reescribiendo interfaces Ejemplo
  • 7. 7 Clases abstractas Una clase abstracta es una clase que contiene uno o más métodos abstractos Una clase abstracta no puede ser instanciada. Al compilar recibiremos un error de compilación. Otra clase ha de proveer la implementación de los métodos abstractos Una clase concreta ha de implementar todos los métodos abstractos de la clase abstracta para poder ser instanciada La clase que implementa esos métodos debe extender de ésta (extends)
  • 8. 8 Clases abstractas public abstract class LivingThing { public void breath(){ System.out.println("Living Thing breathing..."); } public void eat(){ System.out.println("Living Thing eating..."); } /** * Abstract method walk() * We want this method to be implemented by a * Concrete class. */ public abstract void walk(); }
  • 9. 9 Clases abstractas Cuando una clase concreta extiende de la clase abstracta LivingThing, debe implementar el método abstracto walk(), o en su caso, esa subclase debe ser declarada como abstracta y no podría tampoco ser instanciada. public class Human extends LivingThing { public void walk(){ System.out.println("Human walks..."); } }
  • 10. 10 Contenidos de este tema Clases abstractas e interfaces Métodos abstractos Clases abstractas Cuándo usar clases abstractas Qué es un interface Por qué usar un interface Interface vs. clase abstracta Interface como type Interface vs. class Implementando interfaces Implementando múltiples interfaces Herencia en interfaces Interfaces y polimorfismo Reescribiendo interfaces Ejemplo
  • 11. 11 Cuándo usar clases abstractas Resulta evidente en el ejemplo de la figura que los diversos tipos de motores tienen características diferentes. Realmente tienen poco en común un motor eléctrico de corriente alterna y una turbina de vapor. Sin embargo, la construcción de una jerarquía en la que todos motores desciendan de un ancestro común, la clase abstracta "Motores", presenta la ventaja de unificar la interfaz. Aunque evidentemente su definición será tan "abstracta", que no pueda ser utilizada para instanciar directamente ningún tipo de motor. El creador del lenguaje dice de ellas que soportan la noción de un concepto general del que solo pueden utilizarse variantes más concretas.
  • 12. 12 Contenidos de este tema Clases abstractas e interfaces Métodos abstractos Clases abstractas Cuándo usar clases abstractas Qué es un interface Por qué usar un interface Interface vs. clase abstracta Interface como type Interface vs. class Implementando interfaces Implementando múltiples interfaces Herencia en interfaces Interfaces y polimorfismo Reescribiendo interfaces Ejemplo
  • 13. 13 Qué es un interface Define un camino standard y público de especificar el propósito de las clases Define un contrato Todos los métodos de la interface son abstractos Define las signaturas en un conjunto de métodos, sin el cuerpo (body, implementación) Una clase concreta debe implementar la interface (todos los métodos abstractos de la interface) Permite a las clases, sin importar la localización dentro de la jerarquía de clases, el implementar los métodos comunes public interface Relation { public boolean isGreater( Object a, Object b); public boolean isLess( Object a, Object b); public boolean isEqual( Object a, Object b); }
  • 14. 14 Contenidos de este tema Clases abstractas e interfaces Métodos abstractos Clases abstractas Cuándo usar clases abstractas Qué es un interface Por qué usar un interface Interface vs. clase abstracta Interface como type Interface vs. class Implementando interfaces Implementando múltiples interfaces Herencia en interfaces Interfaces y polimorfismo Reescribiendo interfaces Ejemplo
  • 15. 15 Por qué usar un interface Para revelar el interface (la funcionalidad del objeto) sin revelar su implementación Este es el concepto de encapsulación La implementación puede cambiar sin afectar al llamador de la interface El llamador no necesita la implementación en el tiempo de compilación Sólo necesita la interface durante el tiempo de compilación Durante el tiempo de ejecución, la instancia actual está asociada con el tipo del interface Para tener métodos similares en implementaciones de clases no relacionadas Una clase no es una subclase de otra
  • 16. 16 Por qué usar un interface Para revelar el interface (la funcionalidad del objeto) sin revelar su implementación Este es el concepto de encapsulación La implementación puede cambiar sin afectar al llamador de la interface El llamador no necesita la implementación en el tiempo de compilación Sólo necesita la interface durante el tiempo de compilación Durante el tiempo de ejecución, la instancia actual está asociada con el tipo del interface Para tener métodos similares en implementaciones de clases no relacionadas Una clase no es una subclase de otra Para tener herencia múltiple Cada conjunto es definido como una interface Una clase sólo puede implementar múltiples interfaces, pero sólo puede extender de una clase
  • 17. 17 Contenidos de este tema Clases abstractas e interfaces Métodos abstractos Clases abstractas Cuándo usar clases abstractas Qué es un interface Por qué usar un interface Interface vs. clase abstracta Interface como type Interface vs. class Implementando interfaces Implementando múltiples interfaces Herencia en interfaces Interfaces y polimorfismo Reescribiendo interfaces Ejemplo
  • 18. 18 Interface vs. Clase abstracta Todos los métodos de una interface son métodos abstractos, mientras que sólo algunos de los métodos son abtractos en la clase abstracta Los métodos abstractos de una clase abstracta llevan la palabra reservada abstract Un interface sólo puede definir constantes. La clase abstracta puede tener campos. Interfaces no tienen relación de herencia directa con una clase particular, están definidos independientemente Los interfaces poseen relaciones de herencia a través de ellos mismos
  • 19. 19 Contenidos de este tema Clases abstractas e interfaces Métodos abstractos Clases abstractas Cuándo usar clases abstractas Qué es un interface Por qué usar un interface Interface vs. clase abstracta Interface como type Interface vs. class Implementando interfaces Implementando múltiples interfaces Herencia en interfaces Interfaces y polimorfismo Reescribiendo interfaces Ejemplo
  • 20. 20 Interface como type Cuando definimos un nuevo interface, estamos definiendo un nuevo tipo Podemos usar el nombre del interface en cualquier otro sitio Si definimos una variable por referencia cuyo tipo es un interface, cualquier objeto que asignemos a él será una instancia de la clase que implementa el interface (implements) Vamos a ver cómo la clase Person implementa PersonInterface: Person p1 = new Person(); PersonInterface pi1 = p1; PersonInterface pi2 = new Person();
  • 21. 21 Contenidos de este tema Clases abstractas e interfaces Métodos abstractos Clases abstractas Cuándo usar clases abstractas Qué es un interface Por qué usar un interface Interface vs. clase abstracta Interface como type Interface vs. class Implementando interfaces Implementando múltiples interfaces Herencia en interfaces Interfaces y polimorfismo Reescribiendo interfaces Ejemplo
  • 22. 22 Interface vs. Class En la práctica las interfaces y las clases son tipos Esto significa que una interface puede ser usada también en lugares donde una clase puede usarse Por ejemplo: // Recommended practice PersonInterface pi = new Person(); // Not recommended practice Person pc = new Person(); Tanto la interface como la clase, ambas, pueden definir métodos
  • 23. 23 Interface vs. Class DIFERENCIAS Los métodos de un interface son todos métodos abstractos No tienen cuerpo No se puede crear una instancia de una interface. Por ejemplo: PersonInterface pi = new PersonInterface(); //ERROR! Una interface sólo puede ser implementada por clases o extendida por otras interfaces
  • 24. 24 Interface vs. Class Definiendo una interface: public interface [InterfaceName] { //some methods without the body } Como ejemplo, vamos a crear un interface que define relaciones entre dos objetos acorde con el orden natural de los objetos public interface Relation { public boolean isGreater( Object a, Object b); public boolean isLess( Object a, Object b); public boolean isEqual( Object a, Object b); }
  • 25. 25 Contenidos de este tema Clases abstractas e interfaces Métodos abstractos Clases abstractas Cuándo usar clases abstractas Qué es un interface Por qué usar un interface Interface vs. clase abstracta Interface como type Interface vs. class Implementando interfaces Implementando múltiples interfaces Herencia en interfaces Interfaces y polimorfismo Reescribiendo interfaces Ejemplo
  • 26. 26 Implementando interfaces Para crear una clase concreta que implemente un interface: implements keyword. /** * Line class implements Relation interface */ public class Line implements Relation { private double x1; private double x2; private double y1; private double y2; public Line(double x1, double x2, double y1, double y2){ this.x1 = x1; this.x2 = x2; this.y1 = y1; this.y2 = y2; } // More code follows
  • 27. 27 Implementando interfaces public double getLength(){ double length = Math.sqrt((x2-x1)*(x2-x1) + (y2-y1)* (y2-y1)); return length; } public boolean isGreater( Object a, Object b){ double aLen = ((Line)a).getLength(); double bLen = ((Line)b).getLength(); return (aLen > bLen); } public boolean isLess( Object a, Object b){ double aLen = ((Line)a).getLength(); double bLen = ((Line)b).getLength(); return (aLen < bLen); } public boolean isEqual( Object a, Object b){ double aLen = ((Line)a).getLength(); double bLen = ((Line)b).getLength(); return (aLen == bLen); } }
  • 28. 28 Implementando interfaces Cuando la clase trata de implementar una interface hay que asegurarse de implementar todos los métodos de la interface. En caso contrario dará un error.
  • 29. 29 Contenidos de este tema Clases abstractas e interfaces Métodos abstractos Clases abstractas Cuándo usar clases abstractas Qué es un interface Por qué usar un interface Interface vs. clase abstracta Interface como type Interface vs. class Implementando interfaces Implementando múltiples interfaces Herencia en interfaces Interfaces y polimorfismo Reescribiendo interfaces Ejemplo
  • 30. 30 Implementando múltiples interfaces Una clase concreta: Extiende sólo de una clase Puede implementar varias interfaces public class ComputerScienceStudent extends Student implements PersonInterface, AnotherInterface, Third interface{ // All abstract methods of all interfaces // need to be implemented. }
  • 31. 31 Implementando múltiples interfaces Una clase concreta: Extiende sólo de una clase Puede implementar varias interfaces public class ComputerScienceStudent extends Student implements PersonInterface, AnotherInterface, Third interface{ // All abstract methods of all interfaces // need to be implemented. }
  • 32. 32 Contenidos de este tema Clases abstractas e interfaces Métodos abstractos Clases abstractas Cuándo usar clases abstractas Qué es un interface Por qué usar un interface Interface vs. clase abstracta Interface como type Interface vs. class Implementando interfaces Implementando múltiples interfaces Herencia en interfaces Interfaces y polimorfismo Reescribiendo interfaces Ejemplo
  • 33. 33 Herencia en interfaces Las interfaces no son parte de la jerarquía de clases: Sin embargo, las interfaces pueden tener relaciones de herencia entre ellas mismas: public interface PersonInterface { void doSomething(); } public interface StudentInterface extends PersonInterface { void doExtraSomething(); }
  • 34. 34 Contenidos de este tema Clases abstractas e interfaces Métodos abstractos Clases abstractas Cuándo usar clases abstractas Qué es un interface Por qué usar un interface Interface vs. clase abstracta Interface como type Interface vs. class Implementando interfaces Implementando múltiples interfaces Herencia en interfaces Interfaces y polimorfismo Reescribiendo interfaces Ejemplo
  • 35. 35 Interfaces y polimorfismo Las interfaces permiten polimorfismo, desde que pueden llamar a un método de la interface, y la versión apropiada de ese método será ejecutada dependiendo del tipo de la instancia del objeto pasado en la llamada al método de la interface
  • 36. 36 Contenidos de este tema Clases abstractas e interfaces Métodos abstractos Clases abstractas Cuándo usar clases abstractas Qué es un interface Por qué usar un interface Interface vs. clase abstracta Interface como type Interface vs. class Implementando interfaces Implementando múltiples interfaces Herencia en interfaces Interfaces y polimorfismo Reescribiendo interfaces Ejemplo
  • 37. 37 Reescribiendo interfaces Considerar un interface que hemos creado llamado DoIt: public interface DoIt { void doSomething(int i, double x); int doSomethingElse(String s); } Suponemos que, después, queremos añadir un tercer método a DoIt, de tal forma que la interface sería: public interface DoIt { void doSomething(int i, double x); int doSomethingElse(String s); boolean didItWork(int i, double x, String s); } Si hacemos este cambio, todas las clases que implementan la vieja interface DoIt no funcionará porque en este caso no implementa todos los métodos de la interface
  • 38. 38 Reescribiendo interfaces La solución de reescribir una interface existente: Crear más interfaces después Por ejemplo, puedes crear una DoItPlus interface que extienda de DoIt public interface DoItPlus extends DoIt { boolean didItWork(int i, double x, String s); } Ahora los usuarios pueden continuar usando la interface anterior o actualizar a la nueva interface
  • 39. 39 Contenidos de este tema Clases abstractas e interfaces Métodos abstractos Clases abstractas Cuándo usar clases abstractas Qué es un interface Por qué usar un interface Interface vs. clase abstracta Interface como type Interface vs. class Implementando interfaces Implementando múltiples interfaces Herencia en interfaces Interfaces y polimorfismo Reescribiendo interfaces Ejemplo
  • 41. Es importante que recordeis… “Si haces todos los días lo mismo no llegarás más lejos de lo que otras veces has llegado” Adelante!!! Jesús Muñoz jesus@iluego.com