Autor Tema: Ejercicio CU00696B# concepto interface java, herencia multiple. Métodos  (Leído 5182 veces)

Jorge lopez

  • Sniper
  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 248
  • @SniperOfElite
    • Ver Perfil
 Responde a las siguientes preguntas:

Citar
a) ¿Una clase puede heredar de dos clases en Java?

No, una clase puede heredar solo de una super clase mediante la sentencia:
public class ClassName extends SuperClassName, por otra parte, una clase puede heredar de una super clase e implementar una o varias interface.


Citar
b) ¿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?

No, tanto una sentencia while, como una sentencia System.out.println han de ser declaradas en el cuerpo de un metodo, hemos de tener en cuenta que todo metodo declarado en una interface a de ser abstracto, y que un metodo abstracto carece de cuerpo.


Citar
c1) ¿Un objeto Java puede ser del tipo definido por una interface?

Si, un ejemplo seria:

public interface Interface{}
public class Class1 implements Interface{}

public static void main(String []args)
{
  Interface obj1 = new Class1();
}


Citar
c2) ¿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?

Sí, un ejemplo seria:

public interface Interface{}
public class Class1 implements Interface{}
public class Class2 extends Class1{}

public static void main(String []args)
{
  Interface obj1 = new Class1();
  Interface obj2 = new Class2();
}


Citar
c3) ¿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

Sí, un ejemplo seria:

public interface Interface{}
public class Class1 implements Interface{}
public class Class2 extends Class1 implements Interface{}

public static void main(String []args)
{
  Interface obj1 = new Class1();
  Interface obj2 = new Class2();
}

Saludos!
« Última modificación: 14 de Diciembre 2015, 08:26 por Mario R. Rancel »
while(estesVivo)
{
  aprende();
  ayuda();
  enseña();
}
if(mueres){teRecordaran();}

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Re:Ejercicio! entrega CU00696B concepto interface java, herencia multiple.
« Respuesta #1 en: 17 de Septiembre 2014, 21:30 »
Hola Sniper
Tu ejercicio es correcto al 100%
Yo aquí tuve un error en la respuesta c2
Pero con unas indicaciones y haciéndome pensar vi la diferencia

Saludos

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1978
    • Ver Perfil
Re:Ejercicio! entrega CU00696B concepto interface java, herencia multiple.
« Respuesta #2 en: 18 de Septiembre 2014, 08:41 »
Hola, la pregunta c2 tiene "su complejidad". La respuesta de sniper la veo correcta, pero quizás debería acompañarse de un comentario en el sentido de que no se puede responder "sí, en cualquier caso", sino "sí, pero sólo en el caso de que la clase que no implemente la interface directamente adquiera el tipo definido por la interface mediante herencia a través de una clase que sí implementa la interface". Dicho así, puede parecer un trabalenguas, quizás lo más fácil para entenderlo es el ejemplo en código que ha puesto sniper. Saludos,

Jorge lopez

  • Sniper
  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 248
  • @SniperOfElite
    • Ver Perfil
Re:Ejercicio! entrega CU00696B* concepto interface java, herencia multiple.
« Respuesta #3 en: 19 de Septiembre 2014, 02:49 »
 Me parece que comprendí tu "trabalenguas" Mario  ;D

Al declarar:
public interface Interface{}
public class Class1 implements Interface{}
public class Class2 extends Class1{}

Es posible el compilado de:
public static void main(String []args)
{
  Interface obj1 = new Class1();
  Interface obj2 = new Class2();
}

Esto porque de manera indirecta mediante la herencia de Class1 en Class2, la Class2 adquiere (hereda) el tipo definido por la Interface, por tanto si se intenta compilar:

public interface Interface{}
public class Class1{}
public class Class2 extends Class1{}

public static void main(String []args)
{
  Class1 obj1 = new Class1();
  Interface obj2 = new Class2();
}

Obtendriamos un error de compilacion, porque Class2 ni implementa la Interface directamente, ni hereda de una clase que implemente la Interface, por tanto no hay polimorfismo alguno que haga posible el compilado de:

public static void main(String []args)
{
  Class1 obj1 = new Class1();
  Interface obj2 = new Class2();
}
Espero estar en lo correcto

Saludos!
while(estesVivo)
{
  aprende();
  ayuda();
  enseña();
}
if(mueres){teRecordaran();}

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1978
    • Ver Perfil
Re:Ejercicio! entrega CU00696B* concepto interface java, herencia multiple.
« Respuesta #4 en: 20 de Septiembre 2014, 12:38 »
Totalmente en lo correcto y perfectamente explicado sniper. Aquí has dicho una cuestión que es importante y que puede ayudar a quienes tengan problemas para comprender la herencia y el polimorfismo:

"Esto porque de manera indirecta mediante la herencia de Class1 en Class2, la Class2 adquiere (hereda) el tipo definido por la Interface"

Trabalenguas decodificado  ;D

 

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".