Proyecto PCJ. Tema.8. Clases Internas.
Upcoming SlideShare
Loading in...5
×
 

Proyecto PCJ. Tema.8. Clases Internas.

on

  • 1,580 views

 

Statistics

Views

Total Views
1,580
Views on SlideShare
1,559
Embed Views
21

Actions

Likes
0
Downloads
18
Comments
0

2 Embeds 21

http://www.todopps.info 18
http://www.linkedin.com 3

Accessibility

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Proyecto PCJ. Tema.8. Clases Internas. Proyecto PCJ. Tema.8. Clases Internas. Presentation Transcript

    • TEMA 8. Clases internas RuGI Isaac Ruiz Guerra @rugi
      Clases Internas
    • Inner Classes
    • Method-local inner classes
    • Anonymous inner clases
    • Static nested classes
      Clases Internas
    • Inner Classes
    • Method-local inner classes
    • Anonymous inner clases
    • Static nested classes
      Clases Internas
    • ¿Por qué? ¿Para qué?
    • 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.
      Clases Internas
  • Principal clasificación.
    • Regulares
      • “ Normales”
    • No regulares
      • Static
      • Method Local
      • Anonymous
      Clases Internas
  • Regulares. class MyOuter{ Class MyInner{ } }
      Clases Internas
  • Tip %javac MyOuter.java MyOuter.class MyOuter$MyInner.class
      Clases Internas
  • class MyOuter { private int x = 7; class MyInner{ public void seeOuter(){ System.out.println(“Outer x is ”+ x) } } }
      Clases Internas
  • “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
      Clases Internas
  • 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); } } }
      Clases Internas
  • 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(); }
      Clases Internas
  • RECESO.
      Clases Internas
  • 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.
      Clases Internas-No regulares
  • EJEMPLO.
      Clases Internas-No regulares
  • Anonymous Inner Class.
    • Son algo inusuales (¡no en swing!)
    • Se declaran sin utilizar un nombre
    • Lo que debes hacer es: “aprender a no caerte al ver la sintaxis”
      Clases Internas-No regulares
  • EJEMPLO 1. Tipo 1. Rarísimo. Aún así, se ocupan :P
      Clases Internas-No regulares
  • EJEMPLO 2. Tipo 2. El más común. Eventos
      Clases Internas-No regulares
    • Static nested classes
    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.
      Clases Internas-No regulares
    • Static nested classes
    class BigOuter{ static class Nest{ void go(){System.out.println("hi");}} } public class Broom { static class B2 {void goB2(){System.out.println("hi 2");}} public static void main(String[] args) { BigOuter.Nest n = new BigOuter.Nest(); n.go(); B2 b2 = new B2(); b2.goB2(); } }
      Clases Internas-No regulares
  • Eso es todo. Gracias por su atención ;)
      Clases Internas