No no, perché finire il flame? Mi ci metto anche io! :P
No. Il package è un modo di raggruppare alcune classi. Puoi avere anche due o tre package diversi nello stesso apk.
Si chiamano namespace.
Non sono importate. Si dichiara che verranno usate in quel file.#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.
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.
Giusto. L'unica osservazione è che non è un costruttore ma un normale metodo.#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.
Una cosa sono le convenzioni, un'altra gli obblighi.#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.
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.
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.#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.)
Giusto, ma è una stortura tipicamente Javiana. Per esempio C# e Vala (che eredita molto da C#) permettono di scrivere#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..
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.
No. setContentView() non stampa niente a schermo. Semplicemente comunica alla Activity che il contenuto della sua schermata è dato da quello che gli viene passato.#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.
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.