Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Proyecto PCJ. Tema.8. Clases Internas.

1,351 views

Published on

Published in: Technology, News & Politics
  • Be the first to comment

  • Be the first to like this

Proyecto PCJ. Tema.8. Clases Internas.

  1. 1. <ul>TEMA 8. Clases internas RuGI Isaac Ruiz Guerra @rugi </ul><ul>Clases Internas </ul>
  2. 2. <ul><li>Inner Classes
  3. 3. Method-local inner classes
  4. 4. Anonymous inner clases
  5. 5. Static nested classes </li></ul><ul>Clases Internas </ul>
  6. 6. <ul><li>Inner Classes
  7. 7. Method-local inner classes
  8. 8. Anonymous inner clases
  9. 9. Static nested classes </li></ul><ul>Clases Internas </ul>
  10. 10. <ul><li>¿Por qué? ¿Para qué?
  11. 11. Creamos una clase interna cuando queremos mantener una relación estrecha entre 2 clases que, aunque contiene cada una métodos específicos, están sumamente relacionados unos con otros. </li></ul><ul>Clases Internas </ul>
  12. 12. Principal clasificación. <ul><li>Regulares </li><ul><li>“ Normales” </li></ul><li>No regulares </li><ul><li>Static
  13. 13. Method Local
  14. 14. Anonymous </li></ul></ul><ul>Clases Internas </ul>
  15. 15. Regulares. class MyOuter{ Class MyInner{ } } <ul>Clases Internas </ul>
  16. 16. Tip %javac MyOuter.java MyOuter.class MyOuter$MyInner.class <ul>Clases Internas </ul>
  17. 17. class MyOuter { private int x = 7; class MyInner{ public void seeOuter(){ System.out.println(“Outer x is ”+ x) } } } <ul>Clases Internas </ul>
  18. 18. “La única manera de acceder a la clase interna(regular) es a través de una instancia de la clase externa” Instancia externa Instancia interna http://java.sun.com/docs/books/tutorial/java/javaOO/nested.html <ul>Clases Internas </ul>
  19. 19. Instanciando una clase interna desde la clase externa. class MyOuter{ private int x = 7; public void makeInner(){ MyInner in = new MyInner(); in.seeOuter(); } class MyInner{ public void seeOuter(){ System.out.println(“Outer x is ”+x); } } } <ul>Clases Internas </ul>
  20. 20. Instanciando una clase interna desde afuera de la clase externa. public static void main (String[] args){ MyOuter.MyInner inner = new MyOuter().new MyInner(); inner.seeOuter(); } <ul>Clases Internas </ul>
  21. 21. RECESO. <ul>Clases Internas </ul>
  22. 22. Method-Local Inner Classes. - A diferencia de una clase regular, este tipo de clases van dentro de un método. - Únicamente se puede instanciar dentro de un método. - No puede utilizar variables locales(las declaradas dentro del método), a menos que sean finales. <ul>Clases Internas-No regulares </ul>
  23. 23. EJEMPLO. <ul>Clases Internas-No regulares </ul>
  24. 24. Anonymous Inner Class. <ul><li>Son algo inusuales (¡no en swing!)
  25. 25. Se declaran sin utilizar un nombre
  26. 26. Lo que debes hacer es: “aprender a no caerte al ver la sintaxis” </li></ul><ul>Clases Internas-No regulares </ul>
  27. 27. EJEMPLO 1. Tipo 1. Rarísimo. Aún así, se ocupan :P <ul>Clases Internas-No regulares </ul>
  28. 28. EJEMPLO 2. Tipo 2. El más común. Eventos <ul>Clases Internas-No regulares </ul>
  29. 29. <ul><li>Static nested classes </li></ul>class BigOuter{ static class Nested{ } } El static , en pocas palabras indica que la clase interna se trata como un dato miembro más de la clase; es decir: se puede acceder sin tener una instancia de la clase externa. <ul>Clases Internas-No regulares </ul>
  30. 30. <ul><li>Static nested classes </li></ul>class BigOuter{ static class Nest{ void go(){System.out.println(&quot;hi&quot;);}} } public class Broom { static class B2 {void goB2(){System.out.println(&quot;hi 2&quot;);}} public static void main(String[] args) { BigOuter.Nest n = new BigOuter.Nest(); n.go(); B2 b2 = new B2(); b2.goB2(); } } <ul>Clases Internas-No regulares </ul>
  31. 31. Eso es todo. Gracias por su atención ;) <ul>Clases Internas </ul>

×