CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: carotix con ben 4 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: gianpassa con ben 14 Thanks ricevuti negli ultimi sette giorni
Utente del mese: DreamReaper con ben 63 Thanks ricevuti nell'ultimo mese

Pagina 3 di 3 primaprima 123
Visualizzazione dei risultati da 21 a 22 su 22
Discussione:

Basic How to

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #21
    Shu
    Shu non è in linea
    Androidiano


    Registrato dal
    Aug 2009
    Messaggi
    158

    Ringraziamenti
    6
    Ringraziato 17 volte in 13 Posts
    Predefinito

    No no, perché finire il flame? Mi ci metto anche io! :P

    Quote Originariamente inviato da Hitler Visualizza il messaggio
    Beh non so se sono ancora in tempo, ma provo a rispondere io alle tue perplessità! Cominciamo in ordine numerico come hai fatto tu :

    #1. Il package non è altro che l'insieme di tutte le classi presenti nell'apk.
    No. Il package è un modo di raggruppare alcune classi. Puoi avere anche due o tre package diversi nello stesso apk.

    Si chiamano namespace.

    #2. Non è proprio giusto definirle librerie, potresti usare la stessa definizione usata in c ' #include ', ma sono semplicemente delle altre classi importate nel package della tua apk.
    Non sono importate. Si dichiara che verranno usate in quel file.
    E` necessario perché il "compilatore" Java è molto pignolo, e vuole che sia dichiarato tutto. Serve anche a risolvere automaticamente i nomi quando non li specifichi completamente.

    #4. Un override è un sovrascrittura di un codice già implementato, nel tuo caso stai stai ri-implementando il costruttore della classe Activity, che ovviamente è stato ereditato dalla classe HelloAndroid che estende Activity.
    Giusto. L'unica osservazione è che non è un costruttore ma un normale metodo.

    #5. Si è giusto quello che dici, ma java quando è nato ha creato anche delle convenzioni.. per farti capire ad esempio ha detto che tutti i package devono iniziare per lettera minuscola, le classi per lettera maiuscola, ecc ecc.. e in una convenzione dice che tutti i costruttori delle classi devono essere public.
    Una cosa sono le convenzioni, un'altra gli obblighi.
    Non è vero che tutti i costruttori devono essere public. Cerca come è definito il Singleton, per esempio.

    Il discorso di MAIUSCOLE, minuscole, CamelCase, partialCamelCase, invece, sono convenzioni.

    #6. super(); non fa nient'altro che richiamare il costruttore della classe, ad esempio se crei due costruttori di una classe qualsiasi, uno dei quali non riceve alcun parametro e l'altro che riceve due paramentri ad esempio interi, puoi richiamare entrambi i costruttori scrivendo super(); e super(int x, int y); l'interprete (in gergo a volte chiamato compilatore) capisce a tempo di esecuzione di quale costruttore si tratta in base ai parametri passati.
    Alla seconda domanda del punto 6 posso semplicemente risponderti in questo modo: hai mai sentito parlare di ricorsione? (scusa se non ti spiego cosa è, ma non è per niente semplice in qualche riga.)
    super() richiama il costruttore della classe PADRE, mentre super.metodo() richiama il metodo() della classe PADRE. In pratica super serve a riferirsi alla (o alle) classi genitrici.

    #7. Devi sempre scrivere il tipo dell'oggetto che vuoi creare, quella è come una dichiarazione di una variabile in c, l'interprete deve sapere che oggetto sta utilizzando! Ti faccio capire meglio.. Immagina di avere una superclasse FigureGeometriche e tutte le sue sotto classi Triangolo,Quadrilatero ecc ecc..
    Se istanzi un oggetto t = new FigureGeometriche(); (apparte che è sintatticamente scorretto e ti da errore) l'interprete non può sapere di che oggetto ha a che fare, proprio perchè dopo new puoi mettere qualsiasi costruttore delle classi superiori, ma l'oggetto può benissimamente essere un oggetto di qualsiasi sottoclasse. Quindi è corretto scrivere sia: Triangolo t = new FigureGeometriche(); sia: Triangolo t = new Triangolo();. Spero di essere stato chiaro in quest'ultimo passaggio..
    Giusto, ma è una stortura tipicamente Javiana. Per esempio C# e Vala (che eredita molto da C#) permettono di scrivere

    var t = new Triangolo();

    E capiscono da soli che t è un Triangolo, visto che glielo dici 7 caratteri dopo.
    Essendo Triangolo un figlio di FigureGeometriche, basta un cast (possibile anche in Java) quando ti serve riferirti a lui come FigureGeometriche.

    #9. Immagina setContentView come la printf in c. E' una delle tantissime procedure (in gergo a volte chiamate funzioni :P) di java per stampare a video.
    No. setContentView() non stampa niente a schermo. Semplicemente comunica alla Activity che il contenuto della sua schermata è dato da quello che gli viene passato.
    Può essere una banale Label (che, lei sì, in un modo o nell'altro scrive qualcosa a schermo), ma può anche essere un RelativeLayout con 30 widget dentro, anche complessi (come un Canvas o una lista che si riempie dinamicamente, o anche altri RelativeLayout o LinearLayout).

    Senza voler fare polemica, non dico di voler essere perfettino, ma bisogna stare attenti a non dare informazioni completamente sbagliate (setContentView e super, per esempio). Le imperfezioni (costruttori pubblici e package, per esempio) vanno bene, non si può sapere tutto, e poi chi legge si informa, ha una traccia da cercare e capisce, ma consiglio di stare attenti.

    Bye.

  2. Il seguente Utente ha ringraziato Shu per il post:

    fritzZz (13-12-09)

  3.  
  4. #22
    Androidiano


    Registrato dal
    May 2009
    Messaggi
    77

    Ringraziamenti
    8
    Ringraziato 2 volte in 2 Posts
    Predefinito

    Shu...grandioso!!

Pagina 3 di 3 primaprima 123

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy