Una lezione molto molto importante sull'ereditarietà: abbiamo introdotto il concetto di ereditarietà, di classi e metodiastratti, parole chiave thise super nei costruttori. Funzionamento dei costruttori nella gerarchia di ereditarietà. Differenza tra overriding e overloading. Visibilità di campi e metodi: pubblica, privata, protetta e di package.
Vantaggi dei metodi e dell'incapsulamento. Metodi e campi statici: modalità di accesso dall'interno e dall'esterno della classe. Perché il main() è static? Importazione statica di campi e metodi.
Enumerazioni. Esempio: SemeCarta e ValoreCarta. Dichiarazione di una enumerazione. Costruttori, campi e metodi di un'enumerazione. I metodi values e valueOf. Enumerazioni e switch.
Autoboxing (vedi immagine sotto :-)), auto-unboxing. Classi wrapper e metodi e costanti delle classi wrapper. Confrontare valori di tipi primitivi vs. oggetti vs. valori di enumerazioni. Esercizi su heap & stack.
Esercizi dall'esonero dell'anno scorso; esercizi su heap & stack; esercizi su array e stringhe. Segmento e Punto; implementazione di Rettangolo con Punto; BarraDiEnergia.
Riferimenti e oggetti. Anatomia della memoria: stack e heap. Metodi statici. Lettura dell'input da console: la classe Scanner. Package. Package standard e package didefault. La dichiarazione import e la parola chiave package.
Strutture di controllo: if, else, il problema dell'else sospeso, else if, operatore di selezione ?, istruzione switch. Esercizi: estrazione del carattere centrale, saluto casuale. Introduzione ai costrutti iterativi: while, do..while, for. Le istruzioni break e continue. Eleganza del codice e coding horror.
L'esercizio Rettangolo. Implementazione di append in StringBuilder. L'iterazione di String.replace. Esercizio Counter + Tornello. Introduzione a if...else, for and while. import e package.