SlideShare ist ein Scribd-Unternehmen logo
1 von 4
Clases contra Interfaces

Clases

Las clases son plantillas de objetos. Definen el tipo de objetos, que datos que contendrá y
los métodos para operar con esos datos. Un ejemplar de esa clase es la plantilla rellena con
los datos y las llamadas a los métodos-- el ejemplar (copia) es el objeto.

Podemos crear muchos ejemplares de la misma clase, creando muchos objetos de ese tipo.
Cada objeto tiene sus propios datos, y algunos objetos comparten datos específicos,
dependiendo de si han sido declarados datos static o instancias. Esto lo explique con el
ejemplo de valor y referencia para determinar la dimensión de una matriz.

Creación de varios ejemplares de clase, por medio de instancia. Donde los parámetros se
utilizan por valor.




En este caso se elabora clase abtrascta con datos static, donde se siempre se solicitan los
datos de la dimensión matriz y se almacenan en una referencia de memoria, no es necesario
instanciar.
Herencia

No tenemos que escribir una clase desde el principio. Si ya existe una clase que tiene
características similares a la que queremos crear, podemos usar la palabra clave extends
para heredar campos y métodos desde otra clase. Luego añadimos mas campos y métodos
para crear una clase más rica que la clase padre. Pero no tenemos que conformarnos con los
campos o métodos heredados. Podemos sobreescribir métodos(Polimorfismo), u ocultar
datos de las clases padre(Encapsulamineto) para cumplir con nuestras necesidades.

Cada vez que se tiene una clase que hereda un método de una superclase, se tiene la
oportunidad de sobreescribir el método (a menos que dicho método esté marcado como
final). El beneficio clave al sobreescribir un método heredado es la habilidad de definir un
comportamiento específico para los objetos de la subclase. Veamos un ejemplo de la
sobreescritura de un método heredado:

public class Animal
{
           public void comer ()
           {
                System.out.println("Animal comiendo...");
           }
}

class Caballo extends Animal
{
       public void comer()
      {
             System.out.println("Caballo comiendo...");
      }
}

Al momento de que Caballo hereda de la clase Animal obtiene el método comer() definido
en Animal, sin embargo, se desea especificar un poco más el comportamiento de Caballo
al momento de llamar a comer(), por lo tanto se define un método con el mismo nombre
dentro de la clase Caballo. Debido a que ambos métodos tienen el mismo nombre, para
saber qué método se invocará en tiempo de ejecución es necesario saber a qué objeto se está
refiriendo. P. ej.:

public static void main(String... args)
{
          Animal a = new Animal();
         Caballo c = new Caballo();

          a.comer();
          c.comer();
}




Esto es cierto para clases concretas, pero no para los interfaces.
Interfaces

Los interfaces declaran métodos, y posiblemente campos estáticos, pero no definen
métodos. En su lugar, los interfaces sólo declaran los métodos sin ninguna instrucción
dentro de ellos. En otras palabras, los interfaces son como plantillas que siempre serán
plantillas. No podemos ejemplarizar un interface para crear un objeto. Son como clases sin
implementación. ¿Entonces por qué existen?

Sirven para un propósito: para forzar al desarrollador a proporcionar esos métodos, con
detalles, en la clase que implements el interface. En otras palabras, implementar un
interface significa que estamos haciendo la promesa de usar ciertos métodos, pero nosotros,
los desarrolladores, definimos los detalles de esos métodos.

¿Por qué es esto útil o necesario?

Supongamos que tenemos un equipo de desarrolladores que están creando clases para hacer
diferentes tipos de objetos animales. Todos esos animales van a tener dos cosas en común:

       Usan alguna foma de locomoción.
       Comen alguna clase de comida.

La diferencia entre los animales está en cómo se mueven y qué y cómo comen. En otras
palabras, cada uno necesita tener los métodos locomotion() y eat() , pero cada individuo,
cada clase animal, define los detalles de esos métodos separadametne basándose en las
necesidades de las especies de animales.

Diseñamos un interface para asegurarnos de que cada objeto animal hace ciertas cosas, y
nuestro equipo desarrolla clases como ésta:
En el interface Animal, los métodos están declarados, pero no definidos. Observa que esos
métodos (en azul) están definidos en clases concretas Shark y Dog . En el ejemplo de
arriba, cada método imprime una línea de texto, indicando lo que come el animal y como se
mueve desde un lugar a otro. La última clase es una aplicación que inicializa las dos clases
concretas Shark y Dog , y llama a los métodos de esas clases, usando el operador punto.

Cuando compilamos y ejecutamos AnimalTest , obtenemos el siguiente resultado:

I swim. I hunt for seals. I run on four legs. I eat kibble.

Los juegos son otro ejemplo de cómo podríamos implementar interfaces. Por ejemplo,
podríamos diseñar los siguientes juegos: Water Pistol Wars, Asteroid Archery, Rubberband
Rally, y Cannon Craze. Todos implican armas de fuego, pero las armas y lo que disparan
son diferentes. Un interface se podría asegurar de que todo juego implemente un método
fire() , pero es cosa de cada diseñador del juego la forma de disparar y el tipo de munición
utilizada.

Weitere ähnliche Inhalte

Was ist angesagt?

Elementos de una clase
Elementos de una claseElementos de una clase
Elementos de una claseIsaias Toledo
 
Introducción a la Programaciónen Java
Introducción a la Programaciónen JavaIntroducción a la Programaciónen Java
Introducción a la Programaciónen Javasantosisidrorivera
 
Clases en Java y todo lo relacionado
Clases en Java y todo lo relacionadoClases en Java y todo lo relacionado
Clases en Java y todo lo relacionadoJuan Carlos Espinoza
 
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)Oscar V
 
Java script estructuras_datos
Java script estructuras_datosJava script estructuras_datos
Java script estructuras_datosjcremiro
 
OOP-JS pjs
OOP-JS pjsOOP-JS pjs
OOP-JS pjsJona Val
 
PresentacióN1
PresentacióN1PresentacióN1
PresentacióN1Rokr02
 
Enum y ArrayList en Java
Enum y ArrayList en JavaEnum y ArrayList en Java
Enum y ArrayList en JavaJimmy Ramos
 
Constructor Y Destructor
Constructor Y DestructorConstructor Y Destructor
Constructor Y DestructorTecnologico
 
Programación de nivel básico 2. c3.
Programación de nivel básico 2. c3.Programación de nivel básico 2. c3.
Programación de nivel básico 2. c3.DENIRAMIREZANDRADE
 
Tipos de Variables en Java
Tipos de Variables en JavaTipos de Variables en Java
Tipos de Variables en JavaAldemar Rosas
 
5.1 estructura de una clase.
5.1 estructura de una clase.5.1 estructura de una clase.
5.1 estructura de una clase.K Manuel TN
 
06 diagrama de clases1
06 diagrama de clases106 diagrama de clases1
06 diagrama de clases1ViReal
 
Terminología básica de la programación orientada a objetos
Terminología básica de la programación orientada a objetosTerminología básica de la programación orientada a objetos
Terminología básica de la programación orientada a objetosDanny Mendoza
 

Was ist angesagt? (19)

Elementos de una clase
Elementos de una claseElementos de una clase
Elementos de una clase
 
Introducción a la Programaciónen Java
Introducción a la Programaciónen JavaIntroducción a la Programaciónen Java
Introducción a la Programaciónen Java
 
Clases en Java y todo lo relacionado
Clases en Java y todo lo relacionadoClases en Java y todo lo relacionado
Clases en Java y todo lo relacionado
 
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
 
Prog.orientada a objeto
Prog.orientada a objetoProg.orientada a objeto
Prog.orientada a objeto
 
Java script estructuras_datos
Java script estructuras_datosJava script estructuras_datos
Java script estructuras_datos
 
OOP-JS pjs
OOP-JS pjsOOP-JS pjs
OOP-JS pjs
 
PresentacióN1
PresentacióN1PresentacióN1
PresentacióN1
 
Enum y ArrayList en Java
Enum y ArrayList en JavaEnum y ArrayList en Java
Enum y ArrayList en Java
 
Constructor Y Destructor
Constructor Y DestructorConstructor Y Destructor
Constructor Y Destructor
 
Guia poo
Guia pooGuia poo
Guia poo
 
Programación de nivel básico 2. c3.
Programación de nivel básico 2. c3.Programación de nivel básico 2. c3.
Programación de nivel básico 2. c3.
 
Tipos de Variables en Java
Tipos de Variables en JavaTipos de Variables en Java
Tipos de Variables en Java
 
5.1 estructura de una clase.
5.1 estructura de una clase.5.1 estructura de una clase.
5.1 estructura de una clase.
 
Tema7 herencia
Tema7 herenciaTema7 herencia
Tema7 herencia
 
06 diagrama de clases1
06 diagrama de clases106 diagrama de clases1
06 diagrama de clases1
 
Tipos de java...
Tipos de java...Tipos de java...
Tipos de java...
 
Terminología básica de la programación orientada a objetos
Terminología básica de la programación orientada a objetosTerminología básica de la programación orientada a objetos
Terminología básica de la programación orientada a objetos
 
Guia poo
Guia pooGuia poo
Guia poo
 

Ähnlich wie Explicacion de interface

Ähnlich wie Explicacion de interface (20)

Conceptos basicos
Conceptos basicosConceptos basicos
Conceptos basicos
 
Conceptos POO PV
Conceptos POO PVConceptos POO PV
Conceptos POO PV
 
U8.- Programacion Orientada a objetos II (2).pdf
U8.- Programacion Orientada a objetos II (2).pdfU8.- Programacion Orientada a objetos II (2).pdf
U8.- Programacion Orientada a objetos II (2).pdf
 
Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]
 
4 unidad polimorfismo
4 unidad polimorfismo4 unidad polimorfismo
4 unidad polimorfismo
 
Introduccionjava
IntroduccionjavaIntroduccionjava
Introduccionjava
 
02 python Programación orientada a objetos y funcional
02 python Programación orientada a objetos y funcional02 python Programación orientada a objetos y funcional
02 python Programación orientada a objetos y funcional
 
Proyecto en android completado
Proyecto en android completadoProyecto en android completado
Proyecto en android completado
 
Presentacion Java
Presentacion JavaPresentacion Java
Presentacion Java
 
03 java poo_parte_2
03 java poo_parte_203 java poo_parte_2
03 java poo_parte_2
 
Conceptos basicos POO
Conceptos basicos POOConceptos basicos POO
Conceptos basicos POO
 
Analisis orientado a objetos
Analisis orientado a objetosAnalisis orientado a objetos
Analisis orientado a objetos
 
Programacion orientada a_objetos
Programacion orientada a_objetosProgramacion orientada a_objetos
Programacion orientada a_objetos
 
C2 clases en java
C2 clases en javaC2 clases en java
C2 clases en java
 
Leccion 9 Java
Leccion 9 JavaLeccion 9 Java
Leccion 9 Java
 
Lp13
Lp13Lp13
Lp13
 
Guia poo php
Guia poo phpGuia poo php
Guia poo php
 
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
 
Intro Java
Intro JavaIntro Java
Intro Java
 

Mehr von Boris Salleg

01. capitulo 2 6 validacion de datos
01. capitulo 2  6 validacion de datos01. capitulo 2  6 validacion de datos
01. capitulo 2 6 validacion de datosBoris Salleg
 
03. prueba de conocimiento inicial excel basico terminada
03. prueba de conocimiento inicial excel basico terminada03. prueba de conocimiento inicial excel basico terminada
03. prueba de conocimiento inicial excel basico terminadaBoris Salleg
 
01. contenido curso internet basico
01. contenido curso internet basico01. contenido curso internet basico
01. contenido curso internet basicoBoris Salleg
 
Contenido curso excel basico
Contenido curso excel basicoContenido curso excel basico
Contenido curso excel basicoBoris Salleg
 
Compromiso academico servicios de internet
Compromiso academico servicios de internetCompromiso academico servicios de internet
Compromiso academico servicios de internetBoris Salleg
 
Compromiso academico excel basico
Compromiso academico excel basicoCompromiso academico excel basico
Compromiso academico excel basicoBoris Salleg
 
Taller #1 institucion educativa las margaritas
Taller #1   institucion educativa las margaritasTaller #1   institucion educativa las margaritas
Taller #1 institucion educativa las margaritasBoris Salleg
 
Introduccion base de datos
Introduccion base de datosIntroduccion base de datos
Introduccion base de datosBoris Salleg
 
Explicacion metodologia 3 capas y base de datos, proyecto de ejemplo jsp
Explicacion metodologia 3 capas y base de datos, proyecto de ejemplo jspExplicacion metodologia 3 capas y base de datos, proyecto de ejemplo jsp
Explicacion metodologia 3 capas y base de datos, proyecto de ejemplo jspBoris Salleg
 
Conexion bd en java y api necesaria
Conexion bd en java y api necesariaConexion bd en java y api necesaria
Conexion bd en java y api necesariaBoris Salleg
 
Algoritmo variables, constantes, tipos de datos y asignacion
Algoritmo variables, constantes, tipos de datos y asignacionAlgoritmo variables, constantes, tipos de datos y asignacion
Algoritmo variables, constantes, tipos de datos y asignacionBoris Salleg
 
Algoritmos, programas, compiladores y lenguajes de programacion
Algoritmos, programas, compiladores y lenguajes de programacionAlgoritmos, programas, compiladores y lenguajes de programacion
Algoritmos, programas, compiladores y lenguajes de programacionBoris Salleg
 
Algoritmo de listas simples completo
Algoritmo de listas simples  completoAlgoritmo de listas simples  completo
Algoritmo de listas simples completoBoris Salleg
 
Introduccion base de datos con MYSQL
Introduccion base de datos con MYSQLIntroduccion base de datos con MYSQL
Introduccion base de datos con MYSQLBoris Salleg
 
Practica utilizacion de beans en jsp
Practica  utilizacion de beans en jspPractica  utilizacion de beans en jsp
Practica utilizacion de beans en jspBoris Salleg
 
Utilizacion de beans en jsp
Utilizacion de beans en jspUtilizacion de beans en jsp
Utilizacion de beans en jspBoris Salleg
 

Mehr von Boris Salleg (20)

01. capitulo 2 6 validacion de datos
01. capitulo 2  6 validacion de datos01. capitulo 2  6 validacion de datos
01. capitulo 2 6 validacion de datos
 
03. prueba de conocimiento inicial excel basico terminada
03. prueba de conocimiento inicial excel basico terminada03. prueba de conocimiento inicial excel basico terminada
03. prueba de conocimiento inicial excel basico terminada
 
01. contenido curso internet basico
01. contenido curso internet basico01. contenido curso internet basico
01. contenido curso internet basico
 
Contenido curso excel basico
Contenido curso excel basicoContenido curso excel basico
Contenido curso excel basico
 
Compromiso academico servicios de internet
Compromiso academico servicios de internetCompromiso academico servicios de internet
Compromiso academico servicios de internet
 
Compromiso academico excel basico
Compromiso academico excel basicoCompromiso academico excel basico
Compromiso academico excel basico
 
Taller #1 institucion educativa las margaritas
Taller #1   institucion educativa las margaritasTaller #1   institucion educativa las margaritas
Taller #1 institucion educativa las margaritas
 
Arboles
ArbolesArboles
Arboles
 
Introduccion base de datos
Introduccion base de datosIntroduccion base de datos
Introduccion base de datos
 
Explicacion metodologia 3 capas y base de datos, proyecto de ejemplo jsp
Explicacion metodologia 3 capas y base de datos, proyecto de ejemplo jspExplicacion metodologia 3 capas y base de datos, proyecto de ejemplo jsp
Explicacion metodologia 3 capas y base de datos, proyecto de ejemplo jsp
 
Conexion bd en java y api necesaria
Conexion bd en java y api necesariaConexion bd en java y api necesaria
Conexion bd en java y api necesaria
 
Condicionales
CondicionalesCondicionales
Condicionales
 
Algoritmo variables, constantes, tipos de datos y asignacion
Algoritmo variables, constantes, tipos de datos y asignacionAlgoritmo variables, constantes, tipos de datos y asignacion
Algoritmo variables, constantes, tipos de datos y asignacion
 
Algoritmos, programas, compiladores y lenguajes de programacion
Algoritmos, programas, compiladores y lenguajes de programacionAlgoritmos, programas, compiladores y lenguajes de programacion
Algoritmos, programas, compiladores y lenguajes de programacion
 
Algoritmo de listas simples completo
Algoritmo de listas simples  completoAlgoritmo de listas simples  completo
Algoritmo de listas simples completo
 
Introduccion base de datos con MYSQL
Introduccion base de datos con MYSQLIntroduccion base de datos con MYSQL
Introduccion base de datos con MYSQL
 
Practica utilizacion de beans en jsp
Practica  utilizacion de beans en jspPractica  utilizacion de beans en jsp
Practica utilizacion de beans en jsp
 
Utilizacion de beans en jsp
Utilizacion de beans en jspUtilizacion de beans en jsp
Utilizacion de beans en jsp
 
Practica eventos
Practica eventosPractica eventos
Practica eventos
 
Clase event
Clase eventClase event
Clase event
 

Explicacion de interface

  • 1. Clases contra Interfaces Clases Las clases son plantillas de objetos. Definen el tipo de objetos, que datos que contendrá y los métodos para operar con esos datos. Un ejemplar de esa clase es la plantilla rellena con los datos y las llamadas a los métodos-- el ejemplar (copia) es el objeto. Podemos crear muchos ejemplares de la misma clase, creando muchos objetos de ese tipo. Cada objeto tiene sus propios datos, y algunos objetos comparten datos específicos, dependiendo de si han sido declarados datos static o instancias. Esto lo explique con el ejemplo de valor y referencia para determinar la dimensión de una matriz. Creación de varios ejemplares de clase, por medio de instancia. Donde los parámetros se utilizan por valor. En este caso se elabora clase abtrascta con datos static, donde se siempre se solicitan los datos de la dimensión matriz y se almacenan en una referencia de memoria, no es necesario instanciar.
  • 2. Herencia No tenemos que escribir una clase desde el principio. Si ya existe una clase que tiene características similares a la que queremos crear, podemos usar la palabra clave extends para heredar campos y métodos desde otra clase. Luego añadimos mas campos y métodos para crear una clase más rica que la clase padre. Pero no tenemos que conformarnos con los campos o métodos heredados. Podemos sobreescribir métodos(Polimorfismo), u ocultar datos de las clases padre(Encapsulamineto) para cumplir con nuestras necesidades. Cada vez que se tiene una clase que hereda un método de una superclase, se tiene la oportunidad de sobreescribir el método (a menos que dicho método esté marcado como final). El beneficio clave al sobreescribir un método heredado es la habilidad de definir un comportamiento específico para los objetos de la subclase. Veamos un ejemplo de la sobreescritura de un método heredado: public class Animal { public void comer () { System.out.println("Animal comiendo..."); } } class Caballo extends Animal { public void comer() { System.out.println("Caballo comiendo..."); } } Al momento de que Caballo hereda de la clase Animal obtiene el método comer() definido en Animal, sin embargo, se desea especificar un poco más el comportamiento de Caballo al momento de llamar a comer(), por lo tanto se define un método con el mismo nombre dentro de la clase Caballo. Debido a que ambos métodos tienen el mismo nombre, para saber qué método se invocará en tiempo de ejecución es necesario saber a qué objeto se está refiriendo. P. ej.: public static void main(String... args) { Animal a = new Animal(); Caballo c = new Caballo(); a.comer(); c.comer(); } Esto es cierto para clases concretas, pero no para los interfaces.
  • 3. Interfaces Los interfaces declaran métodos, y posiblemente campos estáticos, pero no definen métodos. En su lugar, los interfaces sólo declaran los métodos sin ninguna instrucción dentro de ellos. En otras palabras, los interfaces son como plantillas que siempre serán plantillas. No podemos ejemplarizar un interface para crear un objeto. Son como clases sin implementación. ¿Entonces por qué existen? Sirven para un propósito: para forzar al desarrollador a proporcionar esos métodos, con detalles, en la clase que implements el interface. En otras palabras, implementar un interface significa que estamos haciendo la promesa de usar ciertos métodos, pero nosotros, los desarrolladores, definimos los detalles de esos métodos. ¿Por qué es esto útil o necesario? Supongamos que tenemos un equipo de desarrolladores que están creando clases para hacer diferentes tipos de objetos animales. Todos esos animales van a tener dos cosas en común: Usan alguna foma de locomoción. Comen alguna clase de comida. La diferencia entre los animales está en cómo se mueven y qué y cómo comen. En otras palabras, cada uno necesita tener los métodos locomotion() y eat() , pero cada individuo, cada clase animal, define los detalles de esos métodos separadametne basándose en las necesidades de las especies de animales. Diseñamos un interface para asegurarnos de que cada objeto animal hace ciertas cosas, y nuestro equipo desarrolla clases como ésta:
  • 4. En el interface Animal, los métodos están declarados, pero no definidos. Observa que esos métodos (en azul) están definidos en clases concretas Shark y Dog . En el ejemplo de arriba, cada método imprime una línea de texto, indicando lo que come el animal y como se mueve desde un lugar a otro. La última clase es una aplicación que inicializa las dos clases concretas Shark y Dog , y llama a los métodos de esas clases, usando el operador punto. Cuando compilamos y ejecutamos AnimalTest , obtenemos el siguiente resultado: I swim. I hunt for seals. I run on four legs. I eat kibble. Los juegos son otro ejemplo de cómo podríamos implementar interfaces. Por ejemplo, podríamos diseñar los siguientes juegos: Water Pistol Wars, Asteroid Archery, Rubberband Rally, y Cannon Craze. Todos implican armas de fuego, pero las armas y lo que disparan son diferentes. Un interface se podría asegurar de que todo juego implemente un método fire() , pero es cosa de cada diseñador del juego la forma de disparar y el tipo de munición utilizada.