elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Aclaración de conceptos teóricos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Aclaración de conceptos teóricos  (Leído 6,448 veces)
3n31ch


Desconectado Desconectado

Mensajes: 445


Grandes conocimientos engendran grandes dudas


Ver Perfil
Re: Aclaración de conceptos teóricos
« Respuesta #10 en: 4 Febrero 2015, 14:43 pm »

Si seria correcto, pero aun así no es necesario.


En línea

Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Re: Aclaración de conceptos teóricos
« Respuesta #11 en: 4 Febrero 2015, 14:46 pm »

Si A implementa a L1 y X hereda de A e implementa también a L1, no habrá error para el compilador, pero es redundante. Haz la prueba y verás que X aunque implementa a L1 igual que su superclase no necesitas sobre-escribir los métodos de L1. ¿Por qué? Pues porque ya lo hiciste en la superclase A.

Si haces eso no tendría lógica alguna. Prueba antes de preguntar, y alguna duda la comentas.


En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
JonaLamper


Desconectado Desconectado

Mensajes: 394



Ver Perfil
Re: Aclaración de conceptos teóricos
« Respuesta #12 en: 4 Febrero 2015, 15:22 pm »

Sí, es un poco absurdo la verdad.

Ahí va otra:

He visto cosas del tipo
Código
  1. ob = new A();

En ese caso, ¿cuál sería el tipo estático del objeto?  :huh:
En línea

Utilizar palabras para hablar de palabras es como utilizar un lápiz para hacer un dibujo de ese lápiz sobre el mismo lápiz.
3n31ch


Desconectado Desconectado

Mensajes: 445


Grandes conocimientos engendran grandes dudas


Ver Perfil
Re: Aclaración de conceptos teóricos
« Respuesta #13 en: 4 Febrero 2015, 15:29 pm »

te refieres a que nunca se declaro ob?

Código
  1. A ob; // Declaracion
  2. ob = new A(); // Inicializacion
« Última modificación: 4 Febrero 2015, 15:31 pm por Nac-ho » En línea

Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Re: Aclaración de conceptos teóricos
« Respuesta #14 en: 4 Febrero 2015, 15:34 pm »

¿A qué te refieres con tipo estático?

A al implementar L1 es de tipo L1. Por lo que al seguir la programación orientada a interfaces puedes hacer polimorfismo (como si se tratara de herencia).

Código:
L1 -> Interface
A implements L1
B implements L1
C implements L1

Puedes hacer:

Código
  1. L1 obj = new A();
  2. obj = new B();
  3. obj = new C();

Una interface es un contrato. Ésta especifica qué es lo que debe hacer pero no cómo la clase que lo implemente. Por ejemplo:

Código
  1. public interface Construccion {
  2.  
  3.    void hacerBases();
  4.    void hacerColumnas();
  5.    void hacerTechos();
  6.  
  7. }

Nos dice que toda construcción debe tener esas 3 tareas pero que cada construcción las puede hacer a su manera.

Por ésto, podemos hacer:

Código
  1. public class Casa implements Construccion {
  2.    // sobre-escribe métodos
  3. }
  4. public class Edificio implements Construccion {
  5.    // sobre-escribe métodos
  6. }

Con la ayuda de las interfaces generas independencia y ganas mucha flexibilidad además de simular multiherencia.

Como dato adicional, a partie de Java 8 puedes especificar la implementación de un método en la misma interface:

Código
  1. public interface Construccion {
  2.  
  3.    default void hacerBases() {
  4.        System.out.println("Haciendo bases...");
  5.    }
  6.  
  7. }

Recuerda que los métodos en una interface son public y abstract por defecto, por lo que no es necesario especificar public.


Salu2.
« Última modificación: 4 Febrero 2015, 15:56 pm por Gus Garsaky » En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
JonaLamper


Desconectado Desconectado

Mensajes: 394



Ver Perfil
Re: Aclaración de conceptos teóricos
« Respuesta #15 en: 4 Febrero 2015, 16:53 pm »

Gracias. Otra:

Me pone en una pregunta: "¿Por qué podemos hacer lo siguiente en Java, sea cual sea el tipo de la variable a?"

Código
  1. System.out.println(a);

En línea

Utilizar palabras para hablar de palabras es como utilizar un lápiz para hacer un dibujo de ese lápiz sobre el mismo lápiz.
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Aclaración de conceptos teóricos
« Respuesta #16 en: 4 Febrero 2015, 16:58 pm »

Sobrecarga.
En línea

3n31ch


Desconectado Desconectado

Mensajes: 445


Grandes conocimientos engendran grandes dudas


Ver Perfil
Re: Aclaración de conceptos teóricos
« Respuesta #17 en: 4 Febrero 2015, 17:01 pm »

println es un método con sobre carga (dependiendo de sus entradas cambia su funcionamiento)

Citar
PrintStream.println(), PrintStream.println(boolean), PrintStream.println(char), PrintStream.println(char[]), PrintStream.println(double), PrintStream.println(float), PrintStream.println(int), PrintStream.println(long), PrintStream.println(java.lang.Object), PrintStream.println(java.lang.String)

Ve la api: http://docs.oracle.com/javase/7/docs/api/java/lang/System.html#out

Por si acaso, cada clase que creas hereda de Object (aun cunado no lo indiques) por esta razón todas las clases tienen el método toString() el cual utiliza System.out.println() para imprimir un objeto.

Cuando imprimes un objeto se imprime su método toString(). puedes ver que ambas salidas son iguales en el siguiente código:

Código
  1. NewClass objeto = new NewClass();
  2. System.out.println(objeto.toString());
  3. System.out.println(objeto);

Código:
net.elhacker.controller.NewClass@15db9742
net.elhacker.controller.NewClass@15db9742

PD: No reutilices tanto el tema  :o / pensándolo mejor teniendo en cuenta el titulo no creo que  importe el que lo reutilices ya que concuerda con el tema tratado xD!.
« Última modificación: 4 Febrero 2015, 17:12 pm por Nac-ho » En línea

JonaLamper


Desconectado Desconectado

Mensajes: 394



Ver Perfil
Re: Aclaración de conceptos teóricos
« Respuesta #18 en: 4 Febrero 2015, 18:26 pm »

Hay otra que dice: "Indica por qué en un programa orientado a objetos, el forzar la conversión de clases (casting) no es recomendable. Razona tu respuesta."

¿Alguna idea? Sé lo que es hacer casting pero... ¿Por qué no es recomendable?
En línea

Utilizar palabras para hablar de palabras es como utilizar un lápiz para hacer un dibujo de ese lápiz sobre el mismo lápiz.
Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Re: Aclaración de conceptos teóricos
« Respuesta #19 en: 4 Febrero 2015, 18:43 pm »

Siempre vas a necesitar hacer castings explícitamente (implícitamente también ocurre con los llamados upcasting y downcasting).

Respecto a por qué no es recomendado, pues es porque cuando fuerzas a que un objeto se convierta a otro en tiempo de ejecución a un % de probabilidades que no se pueda realizar, quizás porque X método no ha devuelto el valor que se esperaba y no se ha podido hacer un castings, por lo que tendrías una ClassCastException.

Siempre es recomendable trabajar con datos específicos, pero en algunas ocasiones no podrás, por ejemplo con métodos que devuelvan Object. Allí siempre vas a verte obligado a hacer un cast, cosa que tampoco es malo. Si se requiere se debe usar sin más.
En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Una aclaración
Diseño Gráfico
noob_Setup 2 1,868 Último mensaje 7 Diciembre 2005, 15:09 pm
por noob_Setup
Aclaracion
Juegos y Consolas
unliketec 3 2,660 Último mensaje 25 Noviembre 2009, 14:32 pm
por Ariath
aclaración de algunos conceptos y dudas sobre hacking
Wireless en Windows
radi0cabeza 4 3,326 Último mensaje 2 Enero 2013, 17:31 pm
por darkvidhack
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines