Home Foros Foro dudas Foro de Java ¿Por qué se puede utilizar JButton en una clase que está heredada de JFrame?

¿Por qué se puede utilizar JButton en una clase que está heredada de JFrame?

Etiquetado: 

Viendo 7 entradas - de la 1 a la 7 (de un total de 7)
  • Autor
    Entradas
  • #15761

    Victor
    Participante

    Hola a todos ¿Qué tal? Me presento, mi nombre es Víctor.  Surgió la duda en el curso 57 acerca de que cuando está utilizando esta clase por ejemplo:

    class MiMarco extends JFrame{

    }

    ¿Por qué se puede colocar dentro de esa clase el siguiente código?

    JButton boton_uno = new JButton(«Aceptar»);

    No lo utilizó JButton en ese curso, pero lo experimenté, y no daba error.

    Si supuestamente JButton viene de la cadena de herencia de otros paquete, y no tiene nada que ver con JFrame. Espero haber sido claro y concreto.

    Muchas gracias a todos por leer. Espero alguna respuesta, así aclara esta única duda que tengo por el momento. Por cierto, señor Juan Díaz, sos muy claro con tus cursos, se que voy a llegar lejos gracias a usted. Hasta luego. Prosperidad a todos.

    #15765

    Kabuto
    Participante

    Hola.

    Supongo que te refieres a  por qué puede usar JButton sin haber importado la librería,paquete (como quieras llamarlo…) correspondiente.

    En realidad, en ese vídeo, si está importado, porque se usa el asterisco en el import.

    import javax.swing.*;

    Al usar asterisco, estamos pidiendo que se importen TODAS las clases contenidas dentro del paquete Swing.

    Así que solo con ese import ya se puede usar JFrame, JButton, JTextField, JPanel, JLabel,… y un montón de clases más…

     

    Un saludo.

    #15771

    Victor
    Participante

    Hola Kabuto ¿Qué tal? Gracias por tomarte la molestia en responder mi pregunta. Tal vez no fui lo suficientemente especifico. Me refiero más que nada porque no pone por ejemplo.

    class ClaseUno extends JButton, JFrame, (y asi sucesivamente).

    Se que en un video explicó que Java no admite la herencia múltiple, pero vuelvo a la pregunta ¿Por qué se puede usar JButton apesar de que no se extienda en la clase? Asi como JButton, pasa con otras clases, se puede usar apesar de que no se extienda.

    Que tengas excelente día. Hasta luego, Kabuto.

    Atentamente,

    KindlyChat.

    #15787

    Santos
    Participante

    Creo que puede ser por este motivo:

    Cuando tu importas una clase (JButton, Calendar, Color, etc..) quiere decir que tu vas a hacer uso de esa clase para tus propios fines en cualquier parte de tu programa independientemente de la clase en la que la utilices.

    Si tu creas una clase Vehículo y en ella hay una variable de instancia GregorianCalendar, quiere decir que tu instancia de Vehículo tiene un atributo que es una fecha de fabricación (GregorianCalendar), como tendrá otro que puede ser un String con su modelo, otro tipo para su color (Color), etc.. Pero tu Vehículo «no es» una fecha, un color, o un nombre… si no que son atributos de las instancias de esta.

    Cuando tu creas una clase propia y extends (heredas) de otra, quiere decir que tu clase «es un» de la que heredas… Si creas una clase Camión y esta hereda de Vehículo, tu camión «es un» vehículo y poseerá entre otros, los atributos de vehículo. Y podrás hacer uso además de los métodos que Vehículo posea.

    Esto heredando de cases propias, si por el contrario (extends) heredas de clases de la API de java, por ejemplo JFrame, quiere decir que tu clase «es un» marco JFrame, y como tal tendrá sus campos de atributos, sus métodos, sus constructores, etc..

    Volviendo al ejemplo del Camión. Si tu clase Camión extends JButton  y  extends Vehiculo.  Incumple la norma de la herencia en java de «Es un» ya que tu Camión no puede ser las dos cosas a la vez. En cambio, si import JButton, tu camión puede tener una instancia de JButton que le permita por ejemplo, arrancar.

     

    Saludos, y primero espero haberlo entendido yo bien 🙂 y segundo, si es así, espero que que te sirva para entenderlo a ti.

    #15794

    Victor
    Participante

    Hola Santos ¿Qué tal? Gracias por tomarte la molestia en hacerme ver la luz con respecto a las herencias.
    Todo se resume en esto:

    //Ejemplo.

    import javax.swing.JButton;

    class TestOne extends JFrame{

        JFrame test = new TestOne(); // Esto es posible.

        JButton test = new TestOne(); //No es posible.

    }

    Por lo visto, sirve para esto, pero aún así TestOne hereda métodos y atributos de  la clase importada JButton, pero para hacer «principio de sustitución» (Tenía otro nombre, Juan Díaz lo dijo), no sirve con la clase JButton.

    Muchas gracias por responder. Que comienzes bien la semana. Hasta luego.

    Atentamente,

    Kindly Chat.

    #15798

    Santos
    Participante

    Hola Víctor. No acabo de ver lo que comentas de que TestOne o las instancias de esta heredan atributos pertenecientes a JButton.

    Lo que veo que hereda o mas bien comparten son los atributos y métodos de las clases que en su jerarquía tienen en común. En este caso Object—>Component—>Container/ a partir de  ahí  JButton  se va ya al paquete de Swing/JComponent y JFrame  a Window.

    Porque aunque JFrame «no es» un JButton, JFrame «si que es» un Component al igual que JButton.

     

    Saludos.

     

    #15804

    Victor
    Participante

    Hola nuevamente Santos ¿Cómo estás? Gracias por responder de vuelta ¡Exactamente! Apartir de «Component» los paquetes se separan. JFrame y JButton ya no tienen ninguna asociación. Voy entendiendo más y más ¡Haha! Muchas gracias por tomarte la molestia en seguir explayendote.

    Que disfrutes del día Martes. Hasta luego.

    Atentamente,

    Kindly Chat.

Viendo 7 entradas - de la 1 a la 7 (de un total de 7)
  • Debes estar registrado para responder a este debate.

Píldoras Informáticas

Comencé esta aventura para dar soporte a mis alumnos presenciales. Con el apoyo de todos los que me seguís mi canal de YouTube y esta web han crecido mucho más de lo que yo esperaba. Gracias a todos por estar ahí.

Quién está aquí ahora

Foto del perfil de alvaro salazar nuñez
Foto del perfil de jairo montaño
Foto del perfil de Edward
Foto del perfil de Gustavo
Foto del perfil de Laura Romero Gómez
Foto del perfil de Jorge Santizo
Foto del perfil de Miguel Angel Pérez Figueras
Foto del perfil de Gustavo Lima
Foto del perfil de Yan Carlos Lagarejo Raga
Foto del perfil de Luciano
Foto del perfil de Adrian Romero Ruiz
Foto del perfil de Juan Fran