Last active
August 28, 2018 14:27
-
-
Save emieza/f9080b4826ea9ad9eb29fbab2c3d433a to your computer and use it in GitHub Desktop.
Java: exemples previs per entendre llibreries Android
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* Java: exemples per a Android | |
* | |
* Comentem algunes pràctiques habituals a les llibreries per a Android | |
* | |
* - Creació de classes aniuades i crida a mètodes aniuats i contenidors | |
* - Sobreescriptura (override) de mètodes durant la instanciació. | |
* | |
* Pots compilar i executar aquest exemple amb: | |
* $ javac Exemple1.java | |
* $ java Exemple1 | |
* | |
*/ | |
class Exemple1 { | |
public static void main( String args[] ) { | |
System.out.println("Hola!"); | |
// en una classe estàtica com aquesta (amb el main), no podem crear objectes aniuats | |
// Fora ha de ser un objecte "extern", o sigui, no-aniuat | |
Fora f = new Fora(); | |
f.fes_algo(); | |
} | |
} | |
class Fora { | |
// classe Dintre aniuada | |
class Dintre { | |
public void xiula() { | |
System.out.println("xiuuuuuuuuuuuuuuuuuuuuuuu"); | |
} | |
public void fes_algo_mes() { | |
System.out.println("Algomes"); | |
// dintre l'objecte podem cridar el seu propi mètido "xiula", amb o sense this. | |
xiula(); // implicit (primer prova amb la pròpia classe, com si fos un this.) | |
this.xiula(); // explicit | |
// curiosament, també podem cridar mètodes de l'objecte contenidor | |
canta(); // implicit (ho va a buscar primer a la Dintre però no en té, i ho troba a Fora) | |
Fora.this.canta(); // explicit: cal referenciar la classe externa i amb .this | |
// Si volem fer un xiulet utilitzant la classe Fora, caldrà explicitar-ho: | |
Fora.this.xiula(); | |
} | |
} | |
public void xiula() { | |
System.out.println("xiu xiu xiu"); | |
} | |
public void canta() { | |
System.out.println("La la la"); | |
} | |
public void fes_algo() { | |
// Instanciem la classe interna "Dintre" | |
Dintre d = new Dintre(); | |
d.fes_algo_mes(); | |
// Podem sobreesciure mètodes particulars directament al instanciar | |
Dintre d2 = new Dintre() { | |
@Override | |
public void fes_algo_mes() { | |
System.out.println("OVERRRRRRRIDE yeah..."); | |
} | |
}; | |
d2.fes_algo_mes(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment