Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Java import vs extends!!

    ciao domandona da vero "esperto", scusate la mia ironia.

    Se creo un nuovo sorgente Java ed importo delle classi "es. javax.swing.JFrame"... cosa cambia se la nuova classe che andrò a creare estenderà o meno "JFrame"?
    Lo chiedo perchè non ho capito bene la differenza fra extends e import.

  2. #2
    Detto in maniera molto semplice con l'import ti limiti ad utilizzare una determinata classe con extend invece estendi e quindi erediti le caratteristiche della classe in questione.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    credo di aver capito, grazie.
    quindi per conferma di ciò se estendo posso usare tutti i metodi e variabili di quella classe, mentre se non la estendo dovrei riscriverli da zero, giusto?

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613
    Originariamente inviato da myfriends
    credo di aver capito, grazie.
    quindi per conferma di ciò se estendo posso usare tutti i metodi e variabili di quella classe, mentre se non la estendo dovrei riscriverli da zero, giusto?
    "import" e "extends" non è che c'entrino molto una con l'altra.

    Se devi utilizzare una classe che è in un altro package, devi importarla con import, a prescindere dall'utilizzo che vuoi farne, che sia per utilizzarla o per estenderla, o entrambe.

    Se stai scrivendo una classe e vuoi che sia figlia di un'altra classe già esistente, devi usare extends quando definisci la classe. Ovviamente per fare questo devi avere accesso alla superclasse che vuoi estendere (e si torna se necessario al punto di prima).

    Infine, quando estendi una classe (cosa non sempre possibile) hai accesso solo ai membri marcati come public o protected, non a tutti.

    http://docs.oracle.com/javase/tutori...heritance.html

    http://docs.oracle.com/javase/tutori...s/package.html

    http://docs.oracle.com/javase/tutori...sscontrol.html

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Aggiungo che nei casi delle GUI, ed in particolare di classi come JFrame e JPanel è sempre più comodo estenderle, utilizzare i metodi che mettono a disposizione, e crearne di tuoi.

    Comunque come già stato detto da kaamos, extend ed import sono molto diverse...

  6. #6
    quindi import usi la classe e puoi solo istanziare oggetti, extends crei sottoclassi dipendenti dalla classe che estendo, giusto?
    ma se è cosi quindi se io :
    importo una classe e creo un metodo con lo stesso nome che ha nella classe che importo, farei un overload/override di quel metodo o non centrerebbe nulla perchè non la estendo appunto quella classe?
    grazie

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Forse non ti sono chiari concetti molto semplici:

    import --> stai dicendo al compilatore Java dove si trova un determinato simbolo, da quale libreria andare a prendere ciò che interessa. Questa la devi usare ANCHE se usi extends.

    extends --> parola chiave che serve ad indicare al compilatore Java da quale classe estendi, di quale classe vuoi ampliare le funzionalità.

    Questo detto in due parole.

    codice:
    package prova;
    
    import javax.swing.JFrame;
    
    public class TestExtends extends JFrame{
    	// TODO DO YOUR STUFF
    	
    }
    come vedi uso entrambe le parole chiave, la prima (import) per indicare il naming completo della classe di riferimento. In questo caso ogni volta mi serve riferirmi a JFrame posso farlo senza dover mettere il nome completo

    Extends indica che ho appunto esteso le funzionalità, quindi TestExtends è anche JFrame

    se metti import di fatto non istanzi nessun oggetto!!!
    e non basta creare un metodo con nome uguale a quello definito in una classe di cui hai fatto import per parlare di overriding (overload è un'altra cosa): overriding si riferisce a gerarchie di classi (quindi extends)
    RTFM Read That F*** Manual!!!

  8. #8
    si mi sono chiari i 2 concetti, ma non cosi bene come me li hai spiegati, grazie
    quindi volevo la conferma che col solo import e istanziazione di un oggetto, se creerei un metodo con nome identico a quello da cui ho importato la classe non farei alcun override.

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Prego

    no ovviamente no, stai solo definendo un metodo con un nome, che solo per caso è uguale a quello contenuto in una classe che importi
    RTFM Read That F*** Manual!!!

  10. #10
    Originariamente inviato da valia
    Prego

    no ovviamente no, stai solo definendo un metodo con un nome, che solo per caso è uguale a quello contenuto in una classe che importi
    grazie 1000

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.