RSS

Declaraciones y control de acceso (III)

17 Abr

Interfaz

La interfaz pública de una clase es un “contrato” entre el código cliente y la clase que proporciona el servicio.

Decimos que una clase implementa una interfaz cuando implementa todos los métodos declarados en ella.

Varias clases pueden implementar la misma interfaz. Una sola clase puede implementar varias interfaces.

La sintaxis para declarar una interfaz es la siguiente:

[Modificadores] interface NombreInterface [extends InterfacePadre]{
<public static final atributos>
<public abstract metodos>
}

Todos los métodos declarados en una interfaz son public y abstract, aunque no se especifique.
Todos los atributos en una interfaz son public, static y final, aunque no se especifique. Es decir, constantes.

Los métodos no pueden ser static ni final, strictfp, o native.

Una interfaz puede extender solo otras interfaces.

Las interfaces se usan para:

  • declarar métodos que serán implementados por una o varias clases.
  • dar a conocer la interfaz de programación sin revelar la implementación
  • identificar similitudes entre clases no relacionadas
  • simular la herencia múltiple declarando una clase que implemente varias interfaces


Variables Locales y Modificadores

Los modificadores de acceso no son aplicables a variables locales, provocaría error de compilación.
El único modificador que podría aplicarse a variables locales sería final.

Modificadores de acceso para miembros de una clase

Se pueden aplicar: public, protected, paquete (por defecto), private.

Otros modificadores para miembros de una clase

Strictfp

Para miembros de clase sólo se puede aplicar a métodos. Cuando marcamos strictfp a un método el código del método sigue la especificación anterior IEEE754 para flotantes.

Final

Los métodos marcados como final no pueden sobrescribirse.
Los argumentos marcados como final no pueden cambiar su valor.
Si una variable se marca como final, se convierte en una constante.

Abstract

Un método abstracto se declara pero no se implementa. Acaba en ;.
Un solo método abstracto obliga a declarar la clase como abstracta.
La primera subclase concreta debe implementar todos los métodos abstractos.

Static

Pueden marcarse static: métodos, variables, clases anidadas y bloques de inicialización.

Crea miembros que están asociados a la Clase y no necesitan que exista un objeto instanciado de la Clase para existir.

Synchronized

Sólo métodos pueden marcarse synchronized. Significa que solo un hilo puede acceder al método a la vez.

Native

Sólo métodos pueden marcarse native. Indica que el método está implementado en un lenguaje que es dependiente de la plataforma, usualmente C. Su declaración acabará en ‘;’ como los métodos abstractos, ya que su implementación no se especifica.

Transient variable

Si marcamos una variable de instancia transient no se añadirá en la serialización del objeto que la contenga.

Volatile variable

Indica al hilo que accede a la variable que siempre debe reconciliar su copia privada con la copia en memoria. Solo aplica a variables de instancia.

Argumentos variables

Para especificar un método con un número variable de argumentos, se define el tipo seguido de ‘…’, un espacio y un nombre para el array asociado.

El argumento variable debe ser el último en la declaración del método y solo se permite uno.

[Modificador] ValorDeRetorno NombreMetodo (Tipo… a) {}

Constructores

Un constructor es un conjunto de sentencias para inicializar una instancia.No se consideran métodos. No tienen valores de retorno ni se heredan.

El nombre del constructor debe coincidir con el de la clase.

Cada clase tiene al menos un constructor. Si no se escribe ninguno Java suministra uno por defecto. En ese caso el constructor no tiene argumentos y su cuerpo está vacío.

En el momento que nosotros escribamos un constructor se pierde el constructor por defecto.

La sintaxis es:
[Modificadores] nombreClase (<argumentos>){}

Anuncios
 
7 comentarios

Publicado por en 17 abril, 2011 en Estudio, Tema 1

 

Etiquetas: , , ,

7 Respuestas a “Declaraciones y control de acceso (III)

  1. María del Mar

    5 mayo, 2015 at 4:34 pm

    Gracias, saludos desde Barcelona

     
  2. Marco antonio

    22 octubre, 2012 at 1:03 am

    por que dice que los constructores no se heredan? que pasa cuando extiendo una clase y pongo public class Figura{
    private String color;
    Public Figura(int color){
    this,color = color;
    }

    public class Triangulo extends Figura{

    public Triangulo(int Color){
    super(color); // aqui tengo entendido que se hereda el constructor o estoy mal?
    }

    gracias por su atencion que buen blog ! 🙂

     
    • Nendrel

      29 agosto, 2013 at 4:39 pm

      Hola Marco antonio,

      Realmente no heredas el constructor sino que invocas al constructor de la clase padre. En el caso que pones, cuando hagas super(color) se llamará al constructor Figura(int color). Pero esto no significa que lo heredes.

       
  3. Alejandro Malaver

    29 mayo, 2012 at 4:54 pm

    Hola Virginia…
    Nuevamente comento para felicitarte por tu blog, me ha sido de gran ayuda. Adicional quiero agregar algunas cosas que me parecen importantes:

    Modificadores de no Acceso:
    Strictfp: Si una clase no está marcada como strictfp aún es posible etiquetar de esta manera a algunos de sus métodos.Al obligar a los puntos flotantes ceñirse al estandar IEEE 754, significa que los puntos flotantes se comportaran de igual manera sin importar la JVM subyacente.

    Métodos con var-args:
    Cabe aclarar la diferencia entre argumento y parámetro.
    Argumento: lo que se envía al invocar el método.
    doStuff(“a”, 2); // invocando doStuff, asi que a y 2 son argumentos
    Parámetro: lo que indica qué debe recibir el método (está en la declaración del método).
    void doStuff(String s, int a) { } // Esperamos dos parámetros: un String y un int

    Declaración de Constructores:
    • Pueden tener modificadores de acceso.
    • Pueden recibir argumentos (incluso var-args).
    • Los constructores no pueden ser estáticos
    • No pueden ser finales o abstractos (ya que no pueden sobrescribirse)

     
    • Virginia Lopez

      31 mayo, 2012 at 8:19 pm

      Gracias Alejandro por detallarlo mucho más.
      Saludos!

       
  4. Virginia Lopez

    17 octubre, 2011 at 10:28 am

    Hola Juan Angel!

    Pues me alegro mucho que te guste el blog y que te esté sirviendo para prepararte la certificación. Se agradece.

    En cuanto a la errata tienes razón. Es final el único modificador que se puede aplicar, lo corrijo.

    Un saludo!

     
  5. Jangel

    17 octubre, 2011 at 10:05 am

    Buenas.

    Solo escribo para decirte dos cosas.

    Primeramente darte la enhorabuena por el blog ya que es un buen trabajo y nos sirve de ayuda a todos aquellos que deseamos obtener la SCJP.

    En segundo lugar hay una errata en esta página. Dices que el único modificador que se puede aplicar a una variable local es static cuando en realidad es final.

    Un saludo.

     

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: