SlideShare una empresa de Scribd logo
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.

Más contenido relacionado

DOCX
Encapsulamiento
PPT
Herencia - Programación Orientada a Objetos
PPTX
Herencia poo
PPTX
Fundamentos de poo1
DOCX
Cesar adrian barrios alarcon unidad 2
PPT
programacion orientada a objetos
PDF
PPTX
java (clases,herencias,encapsulamiento,.. )
Encapsulamiento
Herencia - Programación Orientada a Objetos
Herencia poo
Fundamentos de poo1
Cesar adrian barrios alarcon unidad 2
programacion orientada a objetos
java (clases,herencias,encapsulamiento,.. )

La actualidad más candente (19)

DOCX
Elementos de una clase
PPT
Introducción a la Programaciónen Java
PPTX
Clases en Java y todo lo relacionado
PDF
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
PPT
Prog.orientada a objeto
PPTX
Java script estructuras_datos
PPTX
OOP-JS pjs
PPT
PresentacióN1
PPTX
Enum y ArrayList en Java
PPT
Constructor Y Destructor
PPTX
Guia poo
PPTX
Programación de nivel básico 2. c3.
PPTX
Tipos de Variables en Java
DOCX
5.1 estructura de una clase.
PDF
Tema7 herencia
PPT
06 diagrama de clases1
PPTX
Tipos de java...
PPTX
Terminología básica de la programación orientada a objetos
PPTX
Guia poo
Elementos de una clase
Introducción a la Programaciónen Java
Clases en Java y todo lo relacionado
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
Prog.orientada a objeto
Java script estructuras_datos
OOP-JS pjs
PresentacióN1
Enum y ArrayList en Java
Constructor Y Destructor
Guia poo
Programación de nivel básico 2. c3.
Tipos de Variables en Java
5.1 estructura de una clase.
Tema7 herencia
06 diagrama de clases1
Tipos de java...
Terminología básica de la programación orientada a objetos
Guia poo
Publicidad

Similar a Explicacion de interface (20)

PPTX
Conceptos basicos
PPTX
Conceptos POO PV
PDF
U8.- Programacion Orientada a objetos II (2).pdf
PDF
Unidad 4. Herencia y Polimorfismouskssss
PDF
Java morld cap2 [CURSO JAVA]
DOCX
4 unidad polimorfismo
PPTX
Introduccionjava
PPTX
Clase1.de programaccion orientada a objetos
ODP
02 python Programación orientada a objetos y funcional
PDF
Proyecto en android completado
PPTX
Presentacion Java
PDF
03 java poo_parte_2
PPTX
Conceptos basicos POO
DOCX
Analisis orientado a objetos
PPTX
Programacion orientada a_objetos
PPT
C2 clases en java
PPT
Leccion 9 Java
PDF
Guia poo php
PPTX
Clases abstractas e interfaces en java
Conceptos basicos
Conceptos POO PV
U8.- Programacion Orientada a objetos II (2).pdf
Unidad 4. Herencia y Polimorfismouskssss
Java morld cap2 [CURSO JAVA]
4 unidad polimorfismo
Introduccionjava
Clase1.de programaccion orientada a objetos
02 python Programación orientada a objetos y funcional
Proyecto en android completado
Presentacion Java
03 java poo_parte_2
Conceptos basicos POO
Analisis orientado a objetos
Programacion orientada a_objetos
C2 clases en java
Leccion 9 Java
Guia poo php
Clases abstractas e interfaces en java
Publicidad

Más de Boris Salleg (20)

DOCX
01. capitulo 2 6 validacion de datos
DOCX
03. prueba de conocimiento inicial excel basico terminada
PPTX
01. contenido curso internet basico
PPTX
Contenido curso excel basico
DOCX
Compromiso academico servicios de internet
DOCX
Compromiso academico excel basico
DOCX
Taller #1 institucion educativa las margaritas
PPT
Arboles
DOCX
Introduccion base de datos
DOCX
Explicacion metodologia 3 capas y base de datos, proyecto de ejemplo jsp
PPTX
Conexion bd en java y api necesaria
DOCX
Condicionales
DOCX
Algoritmo variables, constantes, tipos de datos y asignacion
DOCX
Algoritmos, programas, compiladores y lenguajes de programacion
DOCX
Algoritmo de listas simples completo
DOCX
Introduccion base de datos con MYSQL
DOCX
Practica utilizacion de beans en jsp
DOCX
Utilizacion de beans en jsp
DOCX
Practica eventos
DOCX
Clase event
01. capitulo 2 6 validacion de datos
03. prueba de conocimiento inicial excel basico terminada
01. contenido curso internet basico
Contenido curso excel basico
Compromiso academico servicios de internet
Compromiso academico excel basico
Taller #1 institucion educativa las margaritas
Arboles
Introduccion base de datos
Explicacion metodologia 3 capas y base de datos, proyecto de ejemplo jsp
Conexion bd en java y api necesaria
Condicionales
Algoritmo variables, constantes, tipos de datos y asignacion
Algoritmos, programas, compiladores y lenguajes de programacion
Algoritmo de listas simples completo
Introduccion base de datos con MYSQL
Practica utilizacion de beans en jsp
Utilizacion de beans en jsp
Practica eventos
Clase event

Último (6)

PPT
aditivos1.pptaditivos1.pptaditivos1.pptaditivos1.ppt
PDF
Bestias de la Edad Oscura - Pandemónium - Acto I y II
PPTX
UNICEN.pptxJBJHFYTDRGFXHGVKJBLJK}L´LKOPUOIY
PDF
AINES PDF.pdfssssssssssssssssssssssssssssssssssssssssssssss
PDF
EL STREAMING COMO FORMA DE ENTRETENIMIENTO
PDF
1 Sistema Musculoesquelético. Lic. Pablo Rivas.pdf
aditivos1.pptaditivos1.pptaditivos1.pptaditivos1.ppt
Bestias de la Edad Oscura - Pandemónium - Acto I y II
UNICEN.pptxJBJHFYTDRGFXHGVKJBLJK}L´LKOPUOIY
AINES PDF.pdfssssssssssssssssssssssssssssssssssssssssssssss
EL STREAMING COMO FORMA DE ENTRETENIMIENTO
1 Sistema Musculoesquelético. Lic. Pablo Rivas.pdf

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.