Autor Tema: Java declarar variables con el tipo de una interface e inicialización CU00696B  (Leído 6019 veces)

Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
Buenas tardes, interesantisimo el tema de interface, aunque me temo que costará asimilarlo todo.

Antes de nada dos erratas en el texto que vi, la segunda me trajo un poco loco hasta que entendí.

Citar
Una clase puede implementar uno o varios interfaces en Java (se indica con extends NombreInterface1, NombreInterface2, …etc.), pero sólo puede extender una clase. Implementar varios interfaces en una sola clase es lo más parecido que tiene Java a la herencia múltiple.
ahí es implements.

Citar
c) En algunos casos es igual de viable definir una clase como interfaz que como clase abstracta, pero puestos en esta situación preferiremos optar por una interfaz porque es más flexible y extensible: nos va a permitir que muchas clases implementen la interfaz (aprovechamos la herencia múltiple de las interfaces). En cambio, una clase abstracta sólo nos permite que una clase herede de ella.
sería; una clase solo puede heredar una clase, abstracta (o no) no varías, cosa que si puede implementar varias interfaces. Me obligó a buscar porque clase abstracta, la pueden extender varias clases ;)

Dicho esto, mis respuestas que alguna, no tengo segura del todo.

Pregunta
a) ¿Una clase puede heredar de dos clases en Java?
Respuesta
No, una clase solo puede extender una clase, heredar de ella.

Pregunta
¿Una interface Java puede tener métodos que incluyan una sentencia while? ¿Una interface Java puede tener métodos que incluyan una sentencia System.out.println?
Respuesta
No y no, solo definen metodos, que deben ser sobreescritos (o en este caso escritos) por las clases que implemente la interface.

Pregunta
¿Un objeto Java puede ser del tipo definido por una interface? ¿Un objeto Java puede ser al mismo tiempo del tipo definido por una interface y del tipo definido por una clase que no implementa la interface? ¿Un objeto Java puede ser al mismo tiempo del tipo definido por una interface y del tipo definido por una clase que implementa la interface?
Respuesta
Sí, definido si, inicializado debe ser con una clase concreta.

 La segunda pregunta;
Pensandolo diría que no, pues si haces List <String> miLista; luego debe ser inicializada con alguna que implemente List. Pero, y si la clase extiende de ese tipo? aunque no implemente la interface, aunque claro entonces no podria tener las propiedades o metodos de la interfaz. La respuesta es NO.

Y la ultima es sí, como el ejemplo anterior List <String> miLista = new ArrayList <String>();
« Última modificación: 30 de Abril 2015, 12:46 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola Lorenzo en primer lugar gracias por informar de esas erratas que has detectado, para nosotros es importante detectar y corregir los posibles fallos que se detecten, gracias a aportaciones como la tuya vamos corrigiendo y cada vez es más difícil encontrar erratas pero siempre se escapa alguna :(

Los interfaces son duros de roer en cuanto a verle la utilidad, a mí por lo menos me llevó un tiempo, y hasta que no vas viendo código y viendo cómo darles uso son un poco difíciles.

Para tus respuestas todas están bien: la a) bien, la b) bien

La c) lo has razonado bien, si el tipo estático es List el tipo dinámico ha de implementar List, lo contrario no es posible.

Declaraciones del tipo List <String> miLista = new ArrayList <String>();  son de lo más frecuentes en Java, se hacen continuamente.

Y ya que se ha comprobado que eres perspicaz para detectar erratas, avísanos de cualquier errata o problema que observes en la web!!

Saludos ;)

Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
Jejeje bueno lo hago porque entiendo que es una labor ardua, y si puedo ayudaros a detectar algo que pueda ( quizá esque yo no lo entiendo bien ) estar incorrecto, lo digo. No por nada más.

Sobre errores en la web, hay uno que yo me he dado cuenta, en el curso "java desde cero" si clicas en cualquier tema... ejemplo tema 12, la web te lleva al tema 12 -1, al 11.

En otros cursos no pasa, no es muy importante pero por que lo sepais no esta de más.

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Citar
Sobre errores en la web, hay uno que yo me he dado cuenta, en el curso "java desde cero" si clicas en cualquier tema... ejemplo tema 12, la web te lleva al tema 12 -1, al 11.

Sí... esto fue debido a un cambio que introdujimos en la numeración de cursos, algunos empiezan en la entrega 01 mientras que otros empiezan en la entrega 00. Esto ocasiona que en lo cursos que empiezan con 00 todo vaya desplazado, el 00 es 1, el 01 es 2 y así sucesivamente.

Intentaremos que en futuros cursos la numeración quede pareja porque queda un poco raro...

Cualquier cosa que quieras comentar no dudes en hacerlo

Saludos!

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".