Your SlideShare is downloading. ×
Declaracion controlaccesoparteii
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Declaracion controlaccesoparteii

38
views

Published on


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
38
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 1 Sun Educación México Métodos de instancia y referencia this • Los métodos de instancia pertenecen a cada objeto de la clase. • Solo pueden ser invocados a través de un objeto • El cuerpo de un método de instancia tiene acceso a todos los miembros definidos en la clase. > Incluidos los estáticos. • Todos los métodos de instancia reciben implícitamente un parámetro que permite hacer referencia al objeto. > Esto se logra utilizando la palabra clave this > this puede ser tratado como cualquier objeto, pero, no se pueden hacer cambios a su referencia. • Una variable local oculta a un miembro en caso de tener el mismo nombre. > Existe una notación para acceder a un miembro de manera explicita: this.miembro • Los métodos estáticos no reciben la referencia this
  • 2. 2 Sun Educación México Sobrecarga de Métodos • Cada método tiene una firma, se compone de: > Nombre del método. > Tipo y orden de los parámetros en la lista de parámetros. > Tipo de retorno • La sobrecarga de métodos permite tener un método con el mismo nombre pero diferente lista de parámetros, por lo tanto distinta firma. > Esto permite definir distintas implementaciones de un mismo método. > El tipo de retorno solo puede ser distinto si es de tipo compatible(Covariant)
  • 3. 3 Sun Educación México Constructores • El objetivo del constructor es asignar el estado inicial al objeto cuando el objeto es creado con el operador new. > La sintaxis general de un constructor es: <Encabezado del constructor> (<Lista de parámetros>) { <Cuerpo del constructor> } • Los constructores son similares a los métodos en sintaxis, ha diferencia de: > El encabezado del constructor solo puede tener: – Modificador de ámbito o accesibilidad. – Nombre del constructor, debe ser idéntico al nombre de la clase.
  • 4. 4 Sun Educación México Constructores • Adicionalmente se aplican las siguientes restricciones: > Otros modificadores distintos a los de accesibilidad no están permitidos. > No pueden retornar ningún valor. > Los constructores solo pueden ser invocados con el operador new. • Un constructor por defecto es un constructor sin ningún parámetro. > Si una clase no especifica un constructor, implícitamente se genera el por defecto. > Seria equivalente la siguiente declaración: – <Nombre de la clase> () {} • Si se declara un (ó más) constructor se inhibe la generación implícita del constructor por defecto. • La sobrecarga de constructores es similar a los métodos.
  • 5. 5 Sun Educación México Paquetes • Los paquetes son un mecanismo que puede ser usado para agrupar clases, interfaces y sub-paquetes relacionados. • El operador punto (.) es usado para identificar los miembros en una jerarquía de paquetes. • Se propone un esquema de nombres global, similar al usado en Internet. • Cada archivo de código fuente Java (Unidad de compilación) puede contener cero o mas definiciones de clases e interfaces. Pero, el compilador genera un archivo .class (Byte Codes) por separado para cada uno de ellas.
  • 6. 6 Sun Educación México Definición de Paquetes • La sintaxis para definir un paquete es: > package <ruta jerárquica de paquetes y/o nombre de paquete>; – ejemplo: package com.sun.gui; • Solo una instrucción package puede haber en un archivo de código fuente. • Debe ser la primera instrucción en un archivo de código fuente.
  • 7. 7 Sun Educación México Uso de Paquetes • Los tipos (clases e interfaces) que estén en un paquete, deben tener una accesibilidad correcta para que puedan ser referenciados desde fuera del paquete. > Un tipo puede ser accedido desde fuera del paquete de dos maneras: > Usando el nombre “totalmente calificado” de la jerarquía de paquetes más el nombre del tipo. – Ejemplo: paquete1.paquete2.Clase > Usando la instrucción import. – La sintaxis de import, es: – 1) import <ruta jerárquica de paquetes + nombre de la clase>; – 2) import <ruta jerárquica de paquetes + .*>; > Ejemplos: import com.sun.gui.MainView
  • 8. 8 Sun Educación México Modificadores de Acceso • Clases de primer nivel pueden ser declaradas public (publica) de manera que pueda ser accedida desde cualquier lugar, dentro o fuera del paquete. • El modificador de acceso puede ser omitido (conocido como por defecto ó paquete), pero solo podrá ser accedido desde el mismo paquete. • Los miembros y su accesibilidad se administran de manera independiente a la clase.
  • 9. 9 Sun Educación México Otros Modificadores de Clase • Abstract • Cualquier clase puede ser declarada con este modificador que indica que la clase no puede ser instanciada. > Sin embargo se pueden declarar constructores, los que pueden ser invocados por las clases hijas, a través de “super()”. • Una clase abstracta representa una clase general, que para ser utilizada de un modo práctico necesita ser especializada. > A través de la herencia. • Una clase abstracta puede tener métodos abstractos que deben ser declarados utilizando este modificador. > Las clases que hereden, deberán implementar estos métodos abstractos.
  • 10. 10 Sun Educación México Abstract, Final y interfaces • Final > Una clase final no puede ser extendida. > En otras palabras no se puede cambiar su comportamiento a través de la herencia. > Nota: Una clase no puede ser final y abstracta a la vez. • Las interfaces declaran prototipos de métodos y por su naturaleza son implícitamente abstractos. • Especificar una interfase con el modificador abstract no es correcto y será omitido por el compilador.
  • 11. 11 Sun Educación México Ámbito y Accesibilidad • Los modificadores de accesibilidad de miembros gobiernan donde una variable es visible desde un programa o método. > Java provee modificadores explícitos para controlar el acceso a los miembros. Existen dos áreas principales que gobiernan las reglas de ámbito: – Ámbito de Clase para miembros. – Ámbito de Bloque para variables locales.
  • 12. 12 Sun Educación México Ámbito y Accesibilidad • Ámbito de Clase para miembros > Este ámbito concierne el acceso a los miembros de una clase (incluidos los heredados) a través del nombre desde el código de la clase. > La accesibilidad de los miembros es gobernado por su modificador. –Sin embargo, Los métodos estáticos solo pueden ser accedidos solo por métodos estáticos. > Los miembros de una clase pueden ser accedidos desde la misma clase sin importar el modificador de acceso.
  • 13. 13 Sun Educación México Ámbito de Bloque para variables locales • Declaraciones e instrucciones pueden ser agrupadas entre llaves {} constituyendo un bloque > Esto representa el cuerpo de un método. > Un bloque puede ser agrupado dentro de otro bloque. > Una variable local puede ser declarada dentro en cualquier parte dentro de un bloque. > Una variable declarada dentro de un bloque no puede ser accedida de este. > Una vez finalizado el bloque la variable deja de existir.
  • 14. 14 Sun Educación México Ámbito de Bloque para variables locales • Las variables locales de un método son: > Los parámetros formales. > Las variables declaradas en el cuerpo del método. – Una variable local puede existir en distintas “invocaciones”, donde cada una guarda su propio valor. • No es posible declarar una nueva variable local con el mismo nombre de una variable ya declarada en el mismo ámbito. > También se aplica a: – Parámetros de un método. – Variables con ámbito de clase.
  • 15. 15 Sun Educación México Modificadores de Accesibilidad • Los modificadores de accesibilidad para miembros representan un contrato entre la clase y sus clientes de manera que estos conozcan exactamente los servicios ofrecidos por la clase. • A través de estos modificadores la clase puede controlar el acceso a la información por parte de los clientes, por ejemplo: otra clase. • Los modificadores de accesibilidad son: > public > protected > default (conocido como “accesibilidad de paquete”) > private
  • 16. 16 Sun Educación México Miembros Públicos (public) • Es el menos restrictivo de todos los modificadores. • Un miembro público es accesible desde cualquier lugar, dentro del mismo paquete de la clase o desde otros paquetes donde la clase sea visible. > Esto se aplica para miembros de instancia y estáticos. • Tipos de Acceso: > Desde una sub-clase en el mismo paquete, el cual accede a una variable de instancia o método heredado. > Desde otra clase (sin herencia) en el mismo paquete, que accede a una variable o método de una instancia. > Desde una sub-clase en otro mismo paquete, el cual accede a una variable de instancia o método heredado. > Desde otra clase (sin herencia) en otro paquete, que accede a una variable o método de una instancia.
  • 17. 17 Sun Educación México Miembros Protegidos (protected) • Es menos restrictivo que el modificador por defecto (default) • Un miembro protegido es accesible en el paquete que contiene a la clase, y por todas las sub-clases en cualquier paquete donde la clase sea visible. • En otras palabras, todas las clases que no hereden y que se encuentren en otros paquetes, no tendrán acceso a los miembros protegidos.
  • 18. 18 Sun Educación México Accesibilidad por defecto (default) • Esta accesibilidad aplica cuando no se especifica el modificador para un miembro. • El miembro solo será visible desde otra clase siempre y cuando esta se encuentre en el mismo paquete.
  • 19. 19 Sun Educación México Miembros Privados (private) • Es el mas restrictivo • Un miembro privado es accesible solo en la clase que esta definido.
  • 20. 20 Sun Educación México Tabla de resumen Modificador de Acceso Instancia en el mismo paquete Instancia en otro paquete Subclase en el mismo paquete Subclase en otro paquete Public si Si Si si Private no No No no Protected si No Si si default si No Si no
  • 21. 21 Sun Educación México Otros Modificadores • Ciertas características de miembros (variables y/o métodos) pueden ser especificadas usando las siguientes instrucciones: > static > final > abstract > synchronized > native > transient > volatile
  • 22. 22 Sun Educación México Miembros static • La declaración de miembros estáticos utilizando la palabra clave static permite hacer la distinción de un miembro de instancia. • Los miembros estáticos pertenecen a la clase donde fueron declarados y no forman parte de ninguna instancia de la clase (sin embargo son accesibles). > Pueden ser accedidos de dos maneras: – Usando el nombre de la clase. – A través del un instancia de la clase
  • 23. 23 Sun Educación México Miembros final • Una variable final es básicamente una constante y por lo tanto no puede ser cambiada una vez inicializada. > El modificador final puede ser aplicado a variables de tipo: – Estática – Instancia – Local > Las variables declaradas en una interfase son implícitamente final. > Una variable final de tipo referencia no se puede cambiar, sin embargo el estado del objeto al cual hace referencia si puede cambiar.
  • 24. 24 Sun Educación México Métodos final • Una variable final de instancia o estática debe ser declarada e inicializada. • Un método final se considera completo, por lo tanto su implementación no puede ser sobrescrita por una subclase.
  • 25. 25 Sun Educación México Métodos abstract • Un método abstracto tiene la siguiente sintaxis: > abstract <tipo retorno> <nombre del método> (<lista de parámetros>) <cláusula throws>; • Un método abstracto no tiene implementación. > No tiene cuerpo el método, solo se declara un prototipo. > Las clases que extiendan deberán implementarlo o declararse nuevamente abstracta. • Un método final no puede ser abstracto, y viceversa. • Los métodos definidos en una interfaz implícitamente son abstractos ya que solo se definen prototipos.
  • 26. 26 Sun Educación México Métodos synchronized y native • Métodos synchronized > Muchos hilos pueden ejecutarse simultáneamente dentro de un programa. > Si queremos que un método solo pueda ser ejecutado por un hilo a la vez debemos especificar este modificador. • Métodos native > Los métodos nativos también se conocen como métodos foráneos. > Donde su implementación no esta en Java si no que en otro lenguaje de programación como C o C++. > Solo se declara un prototipo. > API JNI(Java Native Interface)
  • 27. 27 Sun Educación México Variables transient • Los objetos pueden ser almacenados, usando serialización. Estos objetos posteriormente pueden ser recuperados en el mismo estado en que fueron guardados. • Es posible que una variable de instancia (por ejemplo) no requiera ser persistente cuando el objeto sea guardado, en este caso debemos especificar este modificador. • Por razones obvias este modificador no puede ser especificados a variables estáticas.
  • 28. 28 Sun Educación México Variables volatile • Durante la ejecución en un ambiente multi-hilos se pueden guardar valores de miembros (variables) por razones de optimización. • Cuando es de vital importancia la lectura y escritura del valor se puede indicar este modificador de manera que Java omita las optimizaciones y garantice la consistencia.
  • 29. 29 Sun Educación México Tabla de otros modificadores Modificador Variables Métodos static Define una variable de clase Define un método de clase final Define una constante Define un método que no puede ser sobrescrito abstract No aplica Define un método sin cuerpo. synchronized No aplica Define un método que solo puede ser ejecutado por un Hilo a la vez. native No aplica Declara un método que será implementado en otro lenguaje. transient El valor de esta variable no sea persistente cuando el objeto sea serializado. No aplica volatile Indica que el valor de la variable puede ser cambiado asincrónicamente. El compilador no realizara optimizaciones. No aplica