Skip to content

Instantly share code, notes, and snippets.

@emieza
Last active August 28, 2018 14:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save emieza/f9080b4826ea9ad9eb29fbab2c3d433a to your computer and use it in GitHub Desktop.
Save emieza/f9080b4826ea9ad9eb29fbab2c3d433a to your computer and use it in GitHub Desktop.
Java: exemples previs per entendre llibreries Android
/*
* 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