SlideShare una empresa de Scribd logo
1 de 60
Realizado por: Raúl Ernesto Triviño
Alvarado




                     CERTIFICACIÓN JAVA 6
                     Capítulo 1 – Declaraciones y Control de
                     acceso
Identificadores y java Beans
Cubre los objetivos 1.3 y 1.4

1.3 Develop code that declares, initializes, and uses primitives, arrays, enums, and objects as static, instance,
and local variables. Also, use legal identifiers for variable names.


1.4 Develop code that declares both static and non-static methods, and—if appropriate— use method names
that adhere to the JavaBeans naming standards. Also develop code thatdeclares and uses a variable-length
argument list.




            Capítulo 1 – Declaraciones y Control de acceso
Identificadores y java Beans
   Reglas de declarar variables
     Las  variables debe inicializar con una letra, un
      signo de pesos, o un símbolo de conexión como
      una línea al piso (_). No se inicializa con
      números.
     El resto de las variables pueden tener letras,
      números, símbolo de pesos, y símbolos de
      conexión.
     El nombre de las variables no tienen límites.

     Las variables diferencian mayúsculas y
      minúsculas.
            Capítulo 1 – Declaraciones y Control de acceso
Identificadores y java Beans

Variables legales                                        Variables ilegales




int _a;                                                  int :b;
int $c;                                                  int -d;
int ______2_w;                                           int e#;
int _$;                                                  int .f;
int                                                      int 7g;
this_is_a_very_detailed_name_for_an_identifier
;



              Capítulo 1 – Declaraciones y Control de acceso
Identificadores y java Beans
  Listado de palabras reservadas en java




            Capítulo 1 – Declaraciones y Control de acceso
Identificadores y java Beans
   Convenciones de código en java
       Clases e interfaces:
           La primera letra debe ser mayúscula, las clases deben ser
            sustantivos y las interfaces adjetivos
       Los métodos
           Tienen la primera letra en minúscula, y la siguiente palabra
            empieza en mayúscula, deben denotar una acción
       Las variables
           Tienen la primera letra en minúscula, y la siguiente palabra
            empieza en mayúscula, deben denotar un sustantivo
       Constantes
           Debe ser totalmente en mayúsculas y separadas por línea
            al piso
                Capítulo 1 – Declaraciones y Control de acceso
Identificadores y java Beans
   Estándar JavaBeans
     Definición   para llamar los métodos estándar de
      las clases
     Si la propiedad no es boolean entonces los
      métodos getter deben ser getNombreVariable().
     Si es un boolean entonces no se usa get si no is,
      por ejemplo isVariableBoolean().
     Los setters deben ser en todos los casos con
      setNombreVariable().


           Capítulo 1 – Declaraciones y Control de acceso
Declaración de clases
Cubre el objetivo 1.1


  1.1 Develop code that declares classes (including abstract and all forms of nested
      classes),interfaces, and enums, and includes the appropriate use of package
      and import statements (including static imports).




      Capítulo 1 – Declaraciones y Control de acceso
Declaración de clases
   Solo debe haber una clase pública en un archivo
    .java, aunque si pueden declararse varias clases en
    un archivo.
   El nombre del archivo .java debe ser del mismo
    nombre de la clase pública.
   Las clases deben empezar con la sentencia package,
    debe ir antes de las sentencias import. En caso que
    se haga lo contrario aparecerá error de compilación.
   Las sentencias import y package aplican para todas
    las clases del archivo, no existe forma que dos clases
    que estén en el mismo archivo pertenezcan a
    paquetes diferentes.
   No pueden haber clases Control de acceso no publicas con el
             Capítulo 1 – Declaraciones y
                                          publicas y
    mismo nombre.
Declaración de clases
   Declaración de clases y modificadores
     Al
       momento de declarar una clase se deben tener
     en cuenta dos aspectos:
       Modificadores    de acceso: Una clase puede ser
        privada, pública o protegida
       Modificadores adicionales: Una clase además puede
        ser strictfp, final o abstract.




           Capítulo 1 – Declaraciones y Control de acceso
Declaración de clases
   Acceso de las clases:
        El comportamiento de una clase depende de la
        forma como se declare, en este aspecto entonces
        podemos decir que por ejemplo al momento de
        crear una clase A, esta sea diferente al:
         Que   la clase A sea una instancia de la interface B
          (Polifomismo)
         Que la clase A herede de la clase B (Herencia)
         Que la clase A tenga un modificador de acceso,
          dependiendo de esto B puede acceder a esta o no.

                Capítulo 1 – Declaraciones y Control de acceso
Declaración de clases
   Acceso de las clases – Acceso por defecto
     Son las clases que no llevan ningún modificador
      al momento de declararlas.
     Estas clases solo pueden ser vistas por otras
      clases del mismo paquete.


                                              package exam.stuff;
       package cert;
                                              import cert.Beverage;
       class Beverage { }
                                              class Tea extends Beverage { }




                   Compilan?, Arroja error en ejecución?

             Capítulo 1 – Declaraciones y Control de acceso
Declaración de clases
   Acceso de las clases – Acceso público
     Este acceso hace que la clase pueda ser vista
     por todas las clases de java. No interesa si esta
     en otro paquete o librería.
   Acceso de las clases – Acceso privado
     Caso contrarío al anterior, no permite que
     ninguna otra clase la pueda ver ni acceder, así
     esté en el mismo paquete, o inclusive en el
     mismo archivo.


             Capítulo 1 – Declaraciones y Control de acceso
Declaración de clases
   Modificadores adicionales – Final
     Una  clase marcada con final, no permite que la
      clase tenga hijos en el caso de la herencia
     Se hace para garantizar la seguridad de los
      métodos y las clases, y para obligar que los
      métodos no puedan ser sobreescritos.




            Capítulo 1 – Declaraciones y Control de acceso
Declaración de clases
   Declaración de clases – Clase abstracta
     Una clase abstracta nunca podrá ser instanciada, en
      caso que se haga entonces arrojará un error en
      tiempo de ejecución así compile.
     Una clase abstracta se debe implementar siempre y
      cuando tenga un método abstracto, este deberá
      implementarse obligatoriamente por las clases que
      heredan de esta clase.
     Una clase abstracta difiere de una interface porque
      esta puede tener métodos implementados y métodos
      abstractos.
     ¿Una clase abstracta puede existir sin tener métodos
      abstractos? ¿Puede existir una clase que sea final y
      abstracta? 1 – Declaraciones y Control de acceso
            Capítulo
Declaración de interfaces
Cubre los objetivos 1.1 y 1.2



1.1 Develop code that declares classes (including abstract and all forms of nested classes), interfaces, and
enums, and includes the appropriate use of package and import statements (including static imports).
1.2 Develop code that declares an interface. Develop code that implements or extends one or more interfaces.
Develop code that declares an abstract class. Develop code that extends an abstract class.




           Capítulo 1 – Declaraciones y Control de acceso
Declaración de Interfaces
   Funcionamiento de una interface




          Capítulo 1 – Declaraciones y Control de acceso
Declaración de Interfaces
   Todos los métodos de las interfaces son
    implícitamente públicos y abstractos, por lo tanto no
    pueden existir métodos privados o más aún con
    implementación.
   Todas las variables son públicas, estáticas y finales,
    en otras palabras son constantes.
   Los métodos no pueden ser static, ni strictfp o native
   Una interface puede extender de una o varias
    interfaces.
   Una interface no puede extender de algo que no sea
    otra interface
   Una interface no puede implementar nada, ni clase ni
    interface.
   Una interface1debe ser declarada con la palabra
             Capítulo – Declaraciones y Control de acceso
    interface
Declaración de interfaces
   Estas dos declaraciones por lo tanto son
    iguales  public abstract interface Rollable { }
             public interface Rollable { }




   Estas bounce();
       public declaraciónes son válidas:
       void
              void bounce();
            abstract void bounce();
            public abstract void bounce();
            abstract public void bounce();




   Estasvoid bounce(); // final and abstract can never be used
       final
              no son válidas
       // together, and abstract is implied
            static void bounce(); // interfaces define instance methods
            private void bounce(); // interface methods are always public
            protected void bounce(); // (same as above)



                      Capítulo 1 – Declaraciones y Control de acceso
Declaración de interfaces
   Declarando constantes de interfaces
       Todas las variables de una interface son constantes, por lo tanto
        estas serán implícitamente declaradas como public static final.
       No es necesario declararlas explícitamente, sin embargo si se
        llegan a declarar así no existe problema se puede hacer sin
        problema.
       Por lo tanto no pueden existir variables de tipo private.
       Las variables al ser constantes deben tener un valor de
        inicialización, y su valor nunca podrá cambiar.




                                                       Error de compilación

               Capítulo 1 – Declaraciones y Control de acceso
Declarando miembros de una
clase
Responde a los objetivos 1.3 y 1.4
1.3 Develop code that declares, initializes, and uses primitives, arrays, enums,
and objects as static, instance, and local variables. Also, use legal identifiers for
variable names.
1.4 Develop code that declares both static and non-static methods, and—if
appropriate—use method names that adhere to the JavaBeans naming
standards. Also develop code that declares and uses a variable-length argument
list.




         Capítulo 1 – Declaraciones y Control de acceso
Declarando los miembros de una
clase
   Modificadores de acceso
     Los modificadores de acceso de una clase pueden
      ser de 4 niveles: public, protected, default, y private.
     El nivel de acceso de cada uno de estos se puede
      resumir en la siguiente tabla:




            Capítulo 1 – Declaraciones y Control de acceso
Declarando los miembros de una
clase
   Modificadores de no acceso
       Acceso final en métodos
           Un método final no puede ser sobreescrito por parte de una clase
            hijo.
           Es una forma de garantizar la seguridad de los métodos en la
            herencia.




                                                                  Compila bien pero
                                                                  arroja error al
                                                                  momento de
                 Capítulo 1 – Declaraciones y Control de acceso
                                                                  correrlo
Declarando los miembros de una
clase
   Modificadores de no acceso
       Acceso final en argumentos
            Si en la lista de argumentos aparece una variable marcada
            como final significa que el valor de esta variable no puede
            cambiar en el método como tal.

       Acceso abstract en métodos
           Los abstract son métodos que no tienen implementación, la
            clase de estos métodos tiene que marcarse como abstract
            tambien. Por lo tanto pueden haber clases abstract sin
            métodos abstract, pero no al contrario.


                                                                 Error de compilación
                Capítulo 1 – Declaraciones y Control de acceso
Declarando los miembros de una
clase
   Modificadores de no acceso
       Acceso abstract en métodos




       Los métodos abstractos por su naturaleza jamás
        deben mezclarse con modificadores como private o
        final, pues es necesario queque sea heredados para
        implementarse, ni con ytipos de accesopues arroja error de
                Capítulo 1 – Declaraciones Control static
        compilación.
Declarando los miembros de una
clase
   Métodos sincronized
       Indican que este método solo puede ser accedido por un
        hilo a la vez.
       Este modificador solo puede ser aplicado a métodos, no a
        clases o variables.
   Métodos Native
       Sólo puede asignarse a métodos.
       Indica que el método está escrito en un lenguaje
        dependiente de la plataforma, habitualmente en C.
       Cuando usemos un método nativo, sólo incluiremos la
        cabecera del método con el modificador native y terminado
        en punto y coma (;) (como si fuera un método abstracto)
       Se necesitan por tanto los ficheros .h y .c
        correspondientes que serán los que contengan el código
        fuente del método nativo.
              Capítulo 1 – Declaraciones y Control de acceso
Declarando los miembros de una
clase
   Métodos Strictfp
       Es un modificador que se puede usar como modificador de
        clase y/o modificador de métodos. Pero nunca como
        modificador de instancias o variables.
       Cuando colocamos el modificador strictfp delante de una
        clase o delante de un método, estamos indicando que
        nuestra clase o método se rige por el estandar IEEE
        754 para manejar números en coma flotante y para
        realizar operaciones de coma flotante.
       De esta forma se puede suponer cómo van a comportarse
        las operaciones en punto flotante sin importar la
        arquitectura de la JVM que se encuentre por debajo.
       La desventaja es que si la arquitectura que tenemos por
        debajo soporta una precisión mayor, los métodos strictfp
        no harán uso de toda esa potencia y capacidad.
              Capítulo 1 – Declaraciones y Control de acceso
Declarando los miembros de una
clase
   Var-args
       Los var-args solo existen en la declaración de los métodos,
       Se declaran colocando el tipo de variable, seguido de tres
        puntos (…) y el nombre de la variable.
       Cuando se declara un var-arg se pueden, implementar otros
        atributos, pero no varios var-args.
       Los var-args deben declararse como el último atributo de los que
        recibe el método

           Var-args legales                                     Var-args ilegales




               Capítulo 1 – Declaraciones y Control de acceso
Declarando los miembros de una
 clase
    Declaración de constructores
      Los  constructores nunca pueden retornar un
       atributo.
     Deben tener el mismo nombre del atributo

     Pueden ser public, o private pero no pueden ser
       static, final o abstract Constructores ilegales
Constructores Legales




             Capítulo 1 – Declaraciones y Control de acceso
Declaración de variables
   Existen dos tipos de variables en java: Primitivas
    y de referencia.
   Variables primitivas




   Adicionalmente a esto existen las variables
    booleanas que solo pueden ser true o false
           Capítulo 1 – Declaraciones y Control de acceso
Declaración de variables
   Declaración de variables de referencia
     Las variables de referencia pueden ser
      declaradas como static, de instancia, de
      métodos, o locales.
     Se pueden declarar uno o más variables del
      mismo tipo, en la misma linea.
   Variables de instancia
     Están  declaradas dentro de la clase pero fuera de
      cualquier método
     Pueden ser declaradas con cualquiera de los 4
      tipos de acceso (default, private, public y
      protected)
            Capítulo 1 – Declaraciones y Control de acceso
Declaración de variables
   Variables de instancia
     Pueden  ser marcadas como final, transient,
     abstract, syncronized, strictfp, native, o static.




           Capítulo 1 – Declaraciones y Control de acceso
Declaración de variables
   Variables locales
     Son variables que están declaradas dentro de los
      métodos
     Por lo tanto el nivel de alcance de esta variable es
      solo a nivel del método, si se llama desde un punto
      fuera de este, entonces arroja error de compilación.
     Esta variable es necesaria inicializarla antes de
      usarla.
     Las variables locales no pueden ser public, transient,
      volatile, abstract, o static, pero si pueden ser final.
     Shadowing: Es cuando una variable local se llama
      igual que una variable de instancia, existen riesgos a
      que el sistema no logre identificar cual variable se
      refiereCapítulo 1 – Declaraciones esto existe la sentencia this.
              el sistema, por y Control de acceso
Declaración de variables
   Declaración de arrays
     Los   arrays se pueden declarar así:

Arrays construidos legalmente                Arrays construidos ilegalmente




   Variables final
     Una  variable final no permite reasignar el valor de
      la variable una vez se a asignado.

             Capítulo 1 – Declaraciones y Control de acceso
Declaración de variables
Comportamiento de        Comportamiento de un              Comportamiento de
  una clase final           método final                    una variable final




          Capítulo 1 – Declaraciones y Control de acceso
Declaración de variables
   Variables trasient
     Las  variables trasient indican que no se tendrán
      en cuenta al momento de serializar y deserializar
      la clase.


   Variables volatile
     Indica
           que para esta variable un hilo deberá
      comparar su copia privada con la copia maestra
      almacenada en memoria.

            Capítulo 1 – Declaraciones y Control de acceso
Declaración de variables
   Variables y métodos static
     Cuando    uno marca algo en static significa que en
      tiempo de ejecución corre antes de crearse la
      instancia de la clase y solo se ejecuta una sola
      vez. Estos bloques corren antes del constructor.
     El nivel de static se puede aplicar a métodos,
      variables, clases internas, y bloques.
     No pueden ser static constructores, clases
      externas, interfaces, métodos locales de las
      clases internas, variables locales, y variables
      locales
           Capítulo 1 – Declaraciones y Control de acceso
Declaración de variables
   Declaración de enums
     Enum  es una variable que corresponde a una
     lista enumerada de valores constantes. Se
     declara así


     Estos no pueden ser declarados como private o
      protected.
     Los enums son considerados como clases
      apartes, si va dentro de una clase sería como
      una clase interna, por lo tanto no puede
      declararse un enum dentro de un método
              Capítulo 1 – Declaraciones y Control de acceso
Declaración de variables
   Declaración de enums




          Capítulo 1 – Declaraciones y Control de acceso
Declaración de variables
   Declaración de constructores, métodos y
    variables en un enum
     Como  los enums son una especia de clase,
      entonces pues pueden tener constructores,
      métodos y variables
     Constructores:
       Nunca  se puede invocar directamente un constructor
        de un enum, este se invoca automáticamente cuando
        se definen los valores
       Pueden haber constructores con uno o más atributos,
        y pueden sobrescribirse los constructores
           Capítulo 1 – Declaraciones y Control de acceso
Declaración de variables




     Capítulo 1 – Declaraciones y Control de acceso
Preguntas de práctica




  Capítulo 1 – Declaraciones y Control de acceso
Pregunta 1
Which is true? (Choose all that apply.)
 A. "X extends Y" is correct if and only if X is a

  class and Y is an interface
 B. "X extends Y" is correct if and only if X is an

  interface and Y is a class
 C. "X extends Y" is correct if X and Y are either
  both classes or both interfaces
 D. "X extends Y" is correct for all combinations
  of X and Y being classes and/or interfaces
         Capítulo 1 – Declaraciones y Control de acceso
Respuesta 1
   A es incorrecta porque las clases implementan
    interfaces no extienden de ellas.
   B es incorrecta porque las interfaces solo
    heredan de otras interfaces
   C es la correcta.
   La D es incorrecta por las razones ya vista.

              Esta pregunta cubre el objetivo 1.2

          Capítulo 1 – Declaraciones y Control de acceso
Respuesta 2
Which method names follow the JavaBeans
  standard? (Choose all that apply.)
 A. addSize

 B. getCust

 C. deleteRep

 D. isColorado

 E. putDimensions




        Capítulo 1 – Declaraciones y Control de acceso
Respuesta 2
   A es incorrecta porque la sentencia add solo se
    usa con los métodos listener
   B es correcta porque usa get
   C es incorrecta porque delete no esta dentro del
    estándar
   D es correcta porque usa is, is se usa para
    variables booleanas
   E es incorrecta porque put no esta dentro del
    estándar

           Capítulo 1 – Declaraciones y Control de acceso
                    Esta pregunta cubre el objetivo 1.4
Pregunta 3
                    1. class Voop {
                    2. public static void main(String [] args) {
                    3. doStuff(1);
                    4. doStuff(1,2);
                    5. }
                    6. // insert code here
                    7. }

Which, inserted independently at line 6, will compile? (Choose all that apply.)
 A. static void doStuff(int... doArgs) { }

 B. static void doStuff(int[] doArgs) { }

 C. static void doStuff(int doArgs...) { }

 D. static void doStuff(int... doArgs, int y) { }

 E. static void doStuff(int x, int... doArgs) { }



               Capítulo 1 – Declaraciones y Control de acceso
Respuesta 3
   A es correcta, pues cumple la sintaxis de los
    vararg
   B es incorrecta, un array es un objeto, no sirve
    para llenarse como lo hace el código
   C es incorrecta, esta mal declarado el vararg
   D es incorrecta porque el vararg debe ser el
    último atributo de los argumentos del método
   E es correcta, se pueden tener varios vararg
    en una lista de argumentos del método

               Esta pregunta cubre el objetivo 1.4
           Capítulo 1 – Declaraciones y Control de acceso
Pregunta 4
                         1. enum Animals {
                         2. DOG("woof"), CAT("meow"), FISH("burble");
                         3. String sound;
                         4. Animals(String s) { sound = s; }
                         5. }
                         6. class TestEnum {
                         7. static Animals a;
                         8. public static void main(String[] args) {
                         9. System.out.println(a.DOG.sound + " " + a.FISH.sound);
                         10. }
                         11. }

What is the result?
  A. woof burble
  B. Multiple compilation errors
  C. Compilation fails due to an error on line 2
  D. Compilation fails due to an error on line 3
  E. Compilation fails due to an error on line 4
  F. Compilation fails due to an error on line 9



                   Capítulo 1 – Declaraciones y Control de acceso
Respuesta 4
   A es correcta, los enums pueden tener constructores,
    y métodos, además se pueden instanciar como static
   B es incorrecta, no se presentan errores de
    compilación
   C es incorrecta, así se crean la elaboración de los
    atributos del enum, además la sentencia termina con ;
   D es incorrecta, los enums pueden tener variables
    locales
   E es incorrecta, los enums pueden tener constuctores
   F es incorrecta, una clase main puede acceder a
    enum a través de una instancia estática.

            Capítulo 1 – Declaraciones y Control de acceso
                           Esta pregunta cubre el objetivo 1.3
Pregunta 5
                           1. package pkgA;
                           2. public class Foo {
                           3. int a = 5;
                           4. protected int b = 6;
                           5. public int c = 7;
                           6. }
                           3. package pkgB;
                           4. import pkgA.*;
                           5. public class Baz {
                           6. public static void main(String[] args) {
                           7. Foo f = new Foo();
                           8. System.out.print(" " + f.a);
                           9. System.out.print(" " + f.b);
                           10. System.out.println(" " + f.c);
                           11. }
                           12. }



What is the result? (Choose all that apply.)
  A. 5 6 7
  B. 5 followed by an exception
  C. Compilation fails with an error on line 7
  D. Compilation fails with an error on line 8
  E. Compilation fails with an error on line 9
  F. Compilation fails with an error on line 10
                   Capítulo 1 – Declaraciones y Control de acceso
Respuesta 5
   A es incorrecta, la aplicación no compila.
   B es incorrecta, pues la aplicación arroja errores de
    compilación y no de ejecución.
   C es incorrecta, la clase Foo es pública por lo tanto puede
    ser vista por cualquier otra clase.
   D es correcta, las clases con acceso por defecto no pueden
    ser vistas por clases de otros paquetes, arroja error de
    compilación.
   E es correcta, las clases con acceso protected solo pueden
    ser vistas por clases externas pero solo por sus hijas, error
    de compilación
   F es incorrecta, las variables públicas se pueden ver por
    cualquier otra clase

                                   Esta pregunta cubre el objetivo 1.1
             Capítulo 1 – Declaraciones y Control de acceso
Pregunta 6
                           1. public class Electronic implements Device
                           { public void doIt() { } }
                           2.
                           3. abstract class Phone1 extends Electronic { }
                           4.
                           5. abstract class Phone2 extends Electronic
                           { public void doIt(int x) { } }
                           6.
                           7. class Phone3 extends Electronic implements
                           Device
                           { public void doStuff() { } }
                           8.
                           9. interface Device { public void doIt(); }

What is the result? (Choose all that apply.)
  A. Compilation succeeds
  B. Compilation fails with an error on line 1
  C. Compilation fails with an error on line 3
  D. Compilation fails with an error on line 5
  E. Compilation fails with an error on line 7
  F. Compilation fails with an error on line 9


                   Capítulo 1 – Declaraciones y Control de acceso
Respuesta 6
   A es correcta, las clases y las interfaces estan correctamente
    implementadas.
   B es incorrecta, una clase puede implementar una interface sin
    ningún problema.
   C es incorrecta, una clase abstracta puede existir sin métodos
    abstractos, además la clase padre implementó el método de la
    interface
   D es incorrecta, una clase abstracta puede sobrescribir un método
    como una clase normal.
   E es incorrecta, una clase puede heredar de una clase e
    implementar una interface al mismo tiempo, además el método de
    la interface lo implementó la clase padre.
   F es incorrecta, la interface esta correctamente implementada

                                          Esta pregunta cubre el objetivo 1.2

              Capítulo 1 – Declaraciones y Control de acceso
Pregunta 7
                      4. class Announce {
                      5. public static void main(String[] args) {
                      6. for(int __x = 0; __x < 3; __x++) ;
                      7. int #lb = 7;
                      8. long [] x [5];
                      9. Boolean []ba[];
                      10. enum Traffic { RED, YELLOW, GREEN };
                      11. }
                      12. }



What is the result? (Choose all that apply.)
 A. Compilation succeeds

 B. Compilation fails with an error on line 6

 C. Compilation fails with an error on line 7

 D. Compilation fails with an error on line 8

 E. Compilation fails with an error on line 9

 F. Compilation fails with an error on line 10



               Capítulo 1 – Declaraciones y Control de acceso
Respuesta 7
   A es incorrecta, el código no compila correctamente
   B es incorrecta, una variable puede empezar con
    línea al piso _
   C es correcta, una variable no puede empezar con
    simbolo #, solo se vale letras, simbolo pesos ($), o
    línea al piso (_)
   D es correcta, un array no puede declararse con el
    tamaño, debería ser long [] x [];
   E es incorrecta, por el mismo motivo del punto
    anterior
   F es correcta, un enum no puede declararse dentro
    de un método.

                           Esta pregunta cubre el objetivo 1.3
            Capítulo 1 – Declaraciones y Control de acceso
Pregunta 8
                       3. public class TestDays {
                       4. public enum Days { MON, TUE, WED };
                       5. public static void main(String[] args) {
                       6. for(Days d : Days.values() )
                       7. ;
                       8. Days [] d2 = Days.values();
                       9. System.out.println(d2[2]);
                       10. }
                       11. }


What is the result? (Choose all that apply.)
 A. TUE
 B. WED
 C. The output is unpredictable
 D. Compilation fails due to an error on line 4
 E. Compilation fails due to an error on line 6
 F. Compilation fails due to an error on line 8
 G. Compilation fails due to an error on line 9


                Capítulo 1 – Declaraciones y Control de acceso
Respuesta 8
   A es incorrecta, pues las posiciones en los arreglos empiezan
    desde 0
   B es correcta, pues es la variable que corresponde a la
    posicion 2 del array.
   C es incorrecta, la salida si se puede predecir
   D es incorrecta, el enum esta correctamente declarado
   E es incorrecto, este es un for simplificado
   F es incorrecto, el método values del enum, retorna un
    arreglo de valores
   G es incorrecto, se puede obtener de esta forma un valor de
    un array

                                   Esta pregunta cubre el objetivo 1.3

             Capítulo 1 – Declaraciones y Control de acceso
Pregunta 9
                 4. public class Frodo extends Hobbit {
                 5. public static void main(String[] args) {
                 6. Short myGold = 7;
                 7. System.out.println(countGold(myGold, 6));
                 8. }
                 9. }
                 10. class Hobbit {
                 11. int countGold(int x, int y) { return x + y; }
                 12. }


What is the result?
 A. 13

 B. Compilation fails due to multiple errors

 C. Compilation fails due to an error on line 6

 D. Compilation fails due to an error on line 7

 E. Compilation fails due to an error on line 11


          Capítulo 1 – Declaraciones y Control de acceso
Respuesta 9
   A es incorrecta, el código no compila bien y jamás
    da 13
   B es incorrecta, solo presenta un error de
    compilación.
   C es incorrecta, el valor está dentro del rango de
    respuestas.
   D es correcta, no se puede llamar un método no
    estático en un método estático.
   E es incorrecta, el método esta correctamente
    implementado

                    Esta pregunta cubre el objetivo 1.4
           Capítulo 1 – Declaraciones y Control de acceso

Más contenido relacionado

La actualidad más candente

OCP, JSE 6 Programmer (1Z0-851) - Guia practica 6 de 7(Colecciones y Genericos)
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 6 de 7(Colecciones y Genericos)OCP, JSE 6 Programmer (1Z0-851) - Guia practica 6 de 7(Colecciones y Genericos)
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 6 de 7(Colecciones y Genericos)Oscar V
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetosJoseph Bros
 
Curso Java Inicial 5 Relaciones Entre Objetos
Curso Java Inicial   5 Relaciones Entre ObjetosCurso Java Inicial   5 Relaciones Entre Objetos
Curso Java Inicial 5 Relaciones Entre ObjetosEmilio Aviles Avila
 
Equivalencias Vb Net Y C
Equivalencias Vb Net Y CEquivalencias Vb Net Y C
Equivalencias Vb Net Y Cdeadss
 
Cuestionario
CuestionarioCuestionario
Cuestionariojpauly4
 
Programación Orientada a Objetos - Otras relaciones entre clases
Programación Orientada a Objetos - Otras relaciones entre clasesProgramación Orientada a Objetos - Otras relaciones entre clases
Programación Orientada a Objetos - Otras relaciones entre clasesAlvaro Enrique Ruano
 
Teoria-de-la-unidad-2
Teoria-de-la-unidad-2Teoria-de-la-unidad-2
Teoria-de-la-unidad-2Nequiztron
 
Clase n°1 java
Clase n°1 javaClase n°1 java
Clase n°1 javajbersosa
 
Lenguaje de programacion unidad 2 clases y objetos
Lenguaje de programacion unidad 2 clases y objetosLenguaje de programacion unidad 2 clases y objetos
Lenguaje de programacion unidad 2 clases y objetosAndres Herrera Rodriguez
 
Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a ObjetosUVMVirtual
 
Curso Java Inicial 7 Excepciones
Curso Java Inicial   7 ExcepcionesCurso Java Inicial   7 Excepciones
Curso Java Inicial 7 ExcepcionesEmilio Aviles Avila
 
Curso Java Inicial 8 Conceptos Avanzados Applets
Curso Java Inicial   8 Conceptos Avanzados   AppletsCurso Java Inicial   8 Conceptos Avanzados   Applets
Curso Java Inicial 8 Conceptos Avanzados AppletsEmilio Aviles Avila
 
09 Clases Abstractas E Interfaces
09   Clases Abstractas E Interfaces09   Clases Abstractas E Interfaces
09 Clases Abstractas E InterfacesNetwork Sens
 
Clases abstractas e interfaces (AlexandraPerez)
Clases abstractas e interfaces (AlexandraPerez)Clases abstractas e interfaces (AlexandraPerez)
Clases abstractas e interfaces (AlexandraPerez)Alexandra Pérez
 

La actualidad más candente (20)

OCP, JSE 6 Programmer (1Z0-851) - Guia practica 6 de 7(Colecciones y Genericos)
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 6 de 7(Colecciones y Genericos)OCP, JSE 6 Programmer (1Z0-851) - Guia practica 6 de 7(Colecciones y Genericos)
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 6 de 7(Colecciones y Genericos)
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
 
Cuestionario
CuestionarioCuestionario
Cuestionario
 
Curso Java Inicial 5 Relaciones Entre Objetos
Curso Java Inicial   5 Relaciones Entre ObjetosCurso Java Inicial   5 Relaciones Entre Objetos
Curso Java Inicial 5 Relaciones Entre Objetos
 
Equivalencias Vb Net Y C
Equivalencias Vb Net Y CEquivalencias Vb Net Y C
Equivalencias Vb Net Y C
 
Cuestionario
CuestionarioCuestionario
Cuestionario
 
Programación Orientada a Objetos - Otras relaciones entre clases
Programación Orientada a Objetos - Otras relaciones entre clasesProgramación Orientada a Objetos - Otras relaciones entre clases
Programación Orientada a Objetos - Otras relaciones entre clases
 
Java apesteguia
Java apesteguiaJava apesteguia
Java apesteguia
 
Poo en java herencia
Poo en java   herenciaPoo en java   herencia
Poo en java herencia
 
Teoria-de-la-unidad-2
Teoria-de-la-unidad-2Teoria-de-la-unidad-2
Teoria-de-la-unidad-2
 
Clase n°1 java
Clase n°1 javaClase n°1 java
Clase n°1 java
 
Lenguaje de programacion unidad 2 clases y objetos
Lenguaje de programacion unidad 2 clases y objetosLenguaje de programacion unidad 2 clases y objetos
Lenguaje de programacion unidad 2 clases y objetos
 
Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a Objetos
 
Curso Java Inicial 7 Excepciones
Curso Java Inicial   7 ExcepcionesCurso Java Inicial   7 Excepciones
Curso Java Inicial 7 Excepciones
 
Software Correctness
Software CorrectnessSoftware Correctness
Software Correctness
 
Curso Java Inicial 8 Conceptos Avanzados Applets
Curso Java Inicial   8 Conceptos Avanzados   AppletsCurso Java Inicial   8 Conceptos Avanzados   Applets
Curso Java Inicial 8 Conceptos Avanzados Applets
 
09 Clases Abstractas E Interfaces
09   Clases Abstractas E Interfaces09   Clases Abstractas E Interfaces
09 Clases Abstractas E Interfaces
 
Ppt modif acceso
Ppt modif accesoPpt modif acceso
Ppt modif acceso
 
Curso Java Inicial 1 POO
Curso Java Inicial   1 POOCurso Java Inicial   1 POO
Curso Java Inicial 1 POO
 
Clases abstractas e interfaces (AlexandraPerez)
Clases abstractas e interfaces (AlexandraPerez)Clases abstractas e interfaces (AlexandraPerez)
Clases abstractas e interfaces (AlexandraPerez)
 

Destacado

SCJP, Clase 3: Asignaciones
SCJP, Clase 3: AsignacionesSCJP, Clase 3: Asignaciones
SCJP, Clase 3: Asignacionesflekoso
 
SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...
SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...
SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...flekoso
 
ProgramacióN En Java Variables Y Ciclos
ProgramacióN En Java Variables Y CiclosProgramacióN En Java Variables Y Ciclos
ProgramacióN En Java Variables Y CiclosAndres Garcia
 
9 Curso de POO en java - variables, constantes y objetos
9 Curso de POO en java - variables, constantes y objetos9 Curso de POO en java - variables, constantes y objetos
9 Curso de POO en java - variables, constantes y objetosClara Patricia Avella Ibañez
 

Destacado (6)

SCJP, Clase 3: Asignaciones
SCJP, Clase 3: AsignacionesSCJP, Clase 3: Asignaciones
SCJP, Clase 3: Asignaciones
 
Identificadores palabras clave y tipos Java
Identificadores palabras clave y tipos JavaIdentificadores palabras clave y tipos Java
Identificadores palabras clave y tipos Java
 
SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...
SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...
SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...
 
ProgramacióN En Java Variables Y Ciclos
ProgramacióN En Java Variables Y CiclosProgramacióN En Java Variables Y Ciclos
ProgramacióN En Java Variables Y Ciclos
 
9 Curso de POO en java - variables, constantes y objetos
9 Curso de POO en java - variables, constantes y objetos9 Curso de POO en java - variables, constantes y objetos
9 Curso de POO en java - variables, constantes y objetos
 
7 Curso de POO en java - diagrama de clases
7 Curso de POO en java - diagrama de clases7 Curso de POO en java - diagrama de clases
7 Curso de POO en java - diagrama de clases
 

Similar a Certificación java 6 cap 1

Guia de estudio OCP Java SE 7 Programmer
Guia de estudio OCP Java SE 7 ProgrammerGuia de estudio OCP Java SE 7 Programmer
Guia de estudio OCP Java SE 7 ProgrammerOscar V
 
Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]Hack '
 
OCP JSE 6 Programmer (1Z0-851) - Guia practica 1 de 7(Declaraciones)
OCP JSE 6 Programmer (1Z0-851) - Guia practica 1 de 7(Declaraciones)OCP JSE 6 Programmer (1Z0-851) - Guia practica 1 de 7(Declaraciones)
OCP JSE 6 Programmer (1Z0-851) - Guia practica 1 de 7(Declaraciones)Oscar V
 
19 paso de parámetros y ámbito de las variables
19 paso de parámetros y ámbito de las variables19 paso de parámetros y ámbito de las variables
19 paso de parámetros y ámbito de las variablesWilson Cedillo
 
Java ferca
Java fercaJava ferca
Java fercajtk1
 
Java ferca
Java fercaJava ferca
Java fercajtk1
 
Clase n°2 3-4 java
Clase n°2 3-4 javaClase n°2 3-4 java
Clase n°2 3-4 javajbersosa
 
2introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate022introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate02Krizztiina Pacheko
 
2) introduccion al lenguaje java
2) introduccion al lenguaje java2) introduccion al lenguaje java
2) introduccion al lenguaje javaMargarita Romero
 
Presentacion Java
Presentacion JavaPresentacion Java
Presentacion Javamaeusogo
 
Certificación java 6 cap 2
Certificación java 6 cap 2Certificación java 6 cap 2
Certificación java 6 cap 2srBichoRaro
 
DAW - Desarrollo de clases
DAW - Desarrollo de clasesDAW - Desarrollo de clases
DAW - Desarrollo de clasesvay82
 
Programación java1
Programación java1Programación java1
Programación java1jbersosa
 

Similar a Certificación java 6 cap 1 (20)

Guia de estudio OCP Java SE 7 Programmer
Guia de estudio OCP Java SE 7 ProgrammerGuia de estudio OCP Java SE 7 Programmer
Guia de estudio OCP Java SE 7 Programmer
 
Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]
 
Herencia Y Polimorfismo
Herencia Y PolimorfismoHerencia Y Polimorfismo
Herencia Y Polimorfismo
 
Variables en java
Variables en javaVariables en java
Variables en java
 
OCP JSE 6 Programmer (1Z0-851) - Guia practica 1 de 7(Declaraciones)
OCP JSE 6 Programmer (1Z0-851) - Guia practica 1 de 7(Declaraciones)OCP JSE 6 Programmer (1Z0-851) - Guia practica 1 de 7(Declaraciones)
OCP JSE 6 Programmer (1Z0-851) - Guia practica 1 de 7(Declaraciones)
 
19 paso de parámetros y ámbito de las variables
19 paso de parámetros y ámbito de las variables19 paso de parámetros y ámbito de las variables
19 paso de parámetros y ámbito de las variables
 
Java ferca
Java fercaJava ferca
Java ferca
 
Java ferca
Java fercaJava ferca
Java ferca
 
Variables y constantes
Variables  y constantesVariables  y constantes
Variables y constantes
 
Clase n°2 3-4 java
Clase n°2 3-4 javaClase n°2 3-4 java
Clase n°2 3-4 java
 
2introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate022introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate02
 
INTRODUCCION LENGUAJE JAVA
INTRODUCCION LENGUAJE JAVAINTRODUCCION LENGUAJE JAVA
INTRODUCCION LENGUAJE JAVA
 
2) introduccion al lenguaje java
2) introduccion al lenguaje java2) introduccion al lenguaje java
2) introduccion al lenguaje java
 
Presentacion Java
Presentacion JavaPresentacion Java
Presentacion Java
 
Introducción
IntroducciónIntroducción
Introducción
 
Certificación java 6 cap 2
Certificación java 6 cap 2Certificación java 6 cap 2
Certificación java 6 cap 2
 
DAW - Desarrollo de clases
DAW - Desarrollo de clasesDAW - Desarrollo de clases
DAW - Desarrollo de clases
 
Intro Java
Intro JavaIntro Java
Intro Java
 
Expresiones y control del flujo Java
Expresiones y control del flujo JavaExpresiones y control del flujo Java
Expresiones y control del flujo Java
 
Programación java1
Programación java1Programación java1
Programación java1
 

Certificación java 6 cap 1

  • 1. Realizado por: Raúl Ernesto Triviño Alvarado CERTIFICACIÓN JAVA 6 Capítulo 1 – Declaraciones y Control de acceso
  • 2. Identificadores y java Beans Cubre los objetivos 1.3 y 1.4 1.3 Develop code that declares, initializes, and uses primitives, arrays, enums, and objects as static, instance, and local variables. Also, use legal identifiers for variable names. 1.4 Develop code that declares both static and non-static methods, and—if appropriate— use method names that adhere to the JavaBeans naming standards. Also develop code thatdeclares and uses a variable-length argument list. Capítulo 1 – Declaraciones y Control de acceso
  • 3. Identificadores y java Beans  Reglas de declarar variables  Las variables debe inicializar con una letra, un signo de pesos, o un símbolo de conexión como una línea al piso (_). No se inicializa con números.  El resto de las variables pueden tener letras, números, símbolo de pesos, y símbolos de conexión.  El nombre de las variables no tienen límites.  Las variables diferencian mayúsculas y minúsculas. Capítulo 1 – Declaraciones y Control de acceso
  • 4. Identificadores y java Beans Variables legales Variables ilegales int _a; int :b; int $c; int -d; int ______2_w; int e#; int _$; int .f; int int 7g; this_is_a_very_detailed_name_for_an_identifier ; Capítulo 1 – Declaraciones y Control de acceso
  • 5. Identificadores y java Beans  Listado de palabras reservadas en java Capítulo 1 – Declaraciones y Control de acceso
  • 6. Identificadores y java Beans  Convenciones de código en java  Clases e interfaces:  La primera letra debe ser mayúscula, las clases deben ser sustantivos y las interfaces adjetivos  Los métodos  Tienen la primera letra en minúscula, y la siguiente palabra empieza en mayúscula, deben denotar una acción  Las variables  Tienen la primera letra en minúscula, y la siguiente palabra empieza en mayúscula, deben denotar un sustantivo  Constantes  Debe ser totalmente en mayúsculas y separadas por línea al piso Capítulo 1 – Declaraciones y Control de acceso
  • 7. Identificadores y java Beans  Estándar JavaBeans  Definición para llamar los métodos estándar de las clases  Si la propiedad no es boolean entonces los métodos getter deben ser getNombreVariable().  Si es un boolean entonces no se usa get si no is, por ejemplo isVariableBoolean().  Los setters deben ser en todos los casos con setNombreVariable(). Capítulo 1 – Declaraciones y Control de acceso
  • 8. Declaración de clases Cubre el objetivo 1.1 1.1 Develop code that declares classes (including abstract and all forms of nested classes),interfaces, and enums, and includes the appropriate use of package and import statements (including static imports). Capítulo 1 – Declaraciones y Control de acceso
  • 9. Declaración de clases  Solo debe haber una clase pública en un archivo .java, aunque si pueden declararse varias clases en un archivo.  El nombre del archivo .java debe ser del mismo nombre de la clase pública.  Las clases deben empezar con la sentencia package, debe ir antes de las sentencias import. En caso que se haga lo contrario aparecerá error de compilación.  Las sentencias import y package aplican para todas las clases del archivo, no existe forma que dos clases que estén en el mismo archivo pertenezcan a paquetes diferentes.  No pueden haber clases Control de acceso no publicas con el Capítulo 1 – Declaraciones y publicas y mismo nombre.
  • 10. Declaración de clases  Declaración de clases y modificadores  Al momento de declarar una clase se deben tener en cuenta dos aspectos:  Modificadores de acceso: Una clase puede ser privada, pública o protegida  Modificadores adicionales: Una clase además puede ser strictfp, final o abstract. Capítulo 1 – Declaraciones y Control de acceso
  • 11. Declaración de clases  Acceso de las clases:  El comportamiento de una clase depende de la forma como se declare, en este aspecto entonces podemos decir que por ejemplo al momento de crear una clase A, esta sea diferente al:  Que la clase A sea una instancia de la interface B (Polifomismo)  Que la clase A herede de la clase B (Herencia)  Que la clase A tenga un modificador de acceso, dependiendo de esto B puede acceder a esta o no. Capítulo 1 – Declaraciones y Control de acceso
  • 12. Declaración de clases  Acceso de las clases – Acceso por defecto  Son las clases que no llevan ningún modificador al momento de declararlas.  Estas clases solo pueden ser vistas por otras clases del mismo paquete. package exam.stuff; package cert; import cert.Beverage; class Beverage { } class Tea extends Beverage { } Compilan?, Arroja error en ejecución? Capítulo 1 – Declaraciones y Control de acceso
  • 13. Declaración de clases  Acceso de las clases – Acceso público  Este acceso hace que la clase pueda ser vista por todas las clases de java. No interesa si esta en otro paquete o librería.  Acceso de las clases – Acceso privado  Caso contrarío al anterior, no permite que ninguna otra clase la pueda ver ni acceder, así esté en el mismo paquete, o inclusive en el mismo archivo. Capítulo 1 – Declaraciones y Control de acceso
  • 14. Declaración de clases  Modificadores adicionales – Final  Una clase marcada con final, no permite que la clase tenga hijos en el caso de la herencia  Se hace para garantizar la seguridad de los métodos y las clases, y para obligar que los métodos no puedan ser sobreescritos. Capítulo 1 – Declaraciones y Control de acceso
  • 15. Declaración de clases  Declaración de clases – Clase abstracta  Una clase abstracta nunca podrá ser instanciada, en caso que se haga entonces arrojará un error en tiempo de ejecución así compile.  Una clase abstracta se debe implementar siempre y cuando tenga un método abstracto, este deberá implementarse obligatoriamente por las clases que heredan de esta clase.  Una clase abstracta difiere de una interface porque esta puede tener métodos implementados y métodos abstractos.  ¿Una clase abstracta puede existir sin tener métodos abstractos? ¿Puede existir una clase que sea final y abstracta? 1 – Declaraciones y Control de acceso Capítulo
  • 16. Declaración de interfaces Cubre los objetivos 1.1 y 1.2 1.1 Develop code that declares classes (including abstract and all forms of nested classes), interfaces, and enums, and includes the appropriate use of package and import statements (including static imports). 1.2 Develop code that declares an interface. Develop code that implements or extends one or more interfaces. Develop code that declares an abstract class. Develop code that extends an abstract class. Capítulo 1 – Declaraciones y Control de acceso
  • 17. Declaración de Interfaces  Funcionamiento de una interface Capítulo 1 – Declaraciones y Control de acceso
  • 18. Declaración de Interfaces  Todos los métodos de las interfaces son implícitamente públicos y abstractos, por lo tanto no pueden existir métodos privados o más aún con implementación.  Todas las variables son públicas, estáticas y finales, en otras palabras son constantes.  Los métodos no pueden ser static, ni strictfp o native  Una interface puede extender de una o varias interfaces.  Una interface no puede extender de algo que no sea otra interface  Una interface no puede implementar nada, ni clase ni interface.  Una interface1debe ser declarada con la palabra Capítulo – Declaraciones y Control de acceso interface
  • 19. Declaración de interfaces  Estas dos declaraciones por lo tanto son iguales public abstract interface Rollable { } public interface Rollable { }  Estas bounce(); public declaraciónes son válidas: void void bounce(); abstract void bounce(); public abstract void bounce(); abstract public void bounce();  Estasvoid bounce(); // final and abstract can never be used final no son válidas // together, and abstract is implied static void bounce(); // interfaces define instance methods private void bounce(); // interface methods are always public protected void bounce(); // (same as above) Capítulo 1 – Declaraciones y Control de acceso
  • 20. Declaración de interfaces  Declarando constantes de interfaces  Todas las variables de una interface son constantes, por lo tanto estas serán implícitamente declaradas como public static final.  No es necesario declararlas explícitamente, sin embargo si se llegan a declarar así no existe problema se puede hacer sin problema.  Por lo tanto no pueden existir variables de tipo private.  Las variables al ser constantes deben tener un valor de inicialización, y su valor nunca podrá cambiar. Error de compilación Capítulo 1 – Declaraciones y Control de acceso
  • 21. Declarando miembros de una clase Responde a los objetivos 1.3 y 1.4 1.3 Develop code that declares, initializes, and uses primitives, arrays, enums, and objects as static, instance, and local variables. Also, use legal identifiers for variable names. 1.4 Develop code that declares both static and non-static methods, and—if appropriate—use method names that adhere to the JavaBeans naming standards. Also develop code that declares and uses a variable-length argument list. Capítulo 1 – Declaraciones y Control de acceso
  • 22. Declarando los miembros de una clase  Modificadores de acceso  Los modificadores de acceso de una clase pueden ser de 4 niveles: public, protected, default, y private.  El nivel de acceso de cada uno de estos se puede resumir en la siguiente tabla: Capítulo 1 – Declaraciones y Control de acceso
  • 23. Declarando los miembros de una clase  Modificadores de no acceso  Acceso final en métodos  Un método final no puede ser sobreescrito por parte de una clase hijo.  Es una forma de garantizar la seguridad de los métodos en la herencia. Compila bien pero arroja error al momento de Capítulo 1 – Declaraciones y Control de acceso correrlo
  • 24. Declarando los miembros de una clase  Modificadores de no acceso  Acceso final en argumentos  Si en la lista de argumentos aparece una variable marcada como final significa que el valor de esta variable no puede cambiar en el método como tal.  Acceso abstract en métodos  Los abstract son métodos que no tienen implementación, la clase de estos métodos tiene que marcarse como abstract tambien. Por lo tanto pueden haber clases abstract sin métodos abstract, pero no al contrario. Error de compilación Capítulo 1 – Declaraciones y Control de acceso
  • 25. Declarando los miembros de una clase  Modificadores de no acceso  Acceso abstract en métodos  Los métodos abstractos por su naturaleza jamás deben mezclarse con modificadores como private o final, pues es necesario queque sea heredados para implementarse, ni con ytipos de accesopues arroja error de Capítulo 1 – Declaraciones Control static compilación.
  • 26. Declarando los miembros de una clase  Métodos sincronized  Indican que este método solo puede ser accedido por un hilo a la vez.  Este modificador solo puede ser aplicado a métodos, no a clases o variables.  Métodos Native  Sólo puede asignarse a métodos.  Indica que el método está escrito en un lenguaje dependiente de la plataforma, habitualmente en C.  Cuando usemos un método nativo, sólo incluiremos la cabecera del método con el modificador native y terminado en punto y coma (;) (como si fuera un método abstracto)  Se necesitan por tanto los ficheros .h y .c correspondientes que serán los que contengan el código fuente del método nativo. Capítulo 1 – Declaraciones y Control de acceso
  • 27. Declarando los miembros de una clase  Métodos Strictfp  Es un modificador que se puede usar como modificador de clase y/o modificador de métodos. Pero nunca como modificador de instancias o variables.  Cuando colocamos el modificador strictfp delante de una clase o delante de un método, estamos indicando que nuestra clase o método se rige por el estandar IEEE 754 para manejar números en coma flotante y para realizar operaciones de coma flotante.  De esta forma se puede suponer cómo van a comportarse las operaciones en punto flotante sin importar la arquitectura de la JVM que se encuentre por debajo.  La desventaja es que si la arquitectura que tenemos por debajo soporta una precisión mayor, los métodos strictfp no harán uso de toda esa potencia y capacidad. Capítulo 1 – Declaraciones y Control de acceso
  • 28. Declarando los miembros de una clase  Var-args  Los var-args solo existen en la declaración de los métodos,  Se declaran colocando el tipo de variable, seguido de tres puntos (…) y el nombre de la variable.  Cuando se declara un var-arg se pueden, implementar otros atributos, pero no varios var-args.  Los var-args deben declararse como el último atributo de los que recibe el método Var-args legales Var-args ilegales Capítulo 1 – Declaraciones y Control de acceso
  • 29. Declarando los miembros de una clase  Declaración de constructores  Los constructores nunca pueden retornar un atributo.  Deben tener el mismo nombre del atributo  Pueden ser public, o private pero no pueden ser static, final o abstract Constructores ilegales Constructores Legales Capítulo 1 – Declaraciones y Control de acceso
  • 30. Declaración de variables  Existen dos tipos de variables en java: Primitivas y de referencia.  Variables primitivas  Adicionalmente a esto existen las variables booleanas que solo pueden ser true o false Capítulo 1 – Declaraciones y Control de acceso
  • 31. Declaración de variables  Declaración de variables de referencia  Las variables de referencia pueden ser declaradas como static, de instancia, de métodos, o locales.  Se pueden declarar uno o más variables del mismo tipo, en la misma linea.  Variables de instancia  Están declaradas dentro de la clase pero fuera de cualquier método  Pueden ser declaradas con cualquiera de los 4 tipos de acceso (default, private, public y protected) Capítulo 1 – Declaraciones y Control de acceso
  • 32. Declaración de variables  Variables de instancia  Pueden ser marcadas como final, transient, abstract, syncronized, strictfp, native, o static. Capítulo 1 – Declaraciones y Control de acceso
  • 33. Declaración de variables  Variables locales  Son variables que están declaradas dentro de los métodos  Por lo tanto el nivel de alcance de esta variable es solo a nivel del método, si se llama desde un punto fuera de este, entonces arroja error de compilación.  Esta variable es necesaria inicializarla antes de usarla.  Las variables locales no pueden ser public, transient, volatile, abstract, o static, pero si pueden ser final.  Shadowing: Es cuando una variable local se llama igual que una variable de instancia, existen riesgos a que el sistema no logre identificar cual variable se refiereCapítulo 1 – Declaraciones esto existe la sentencia this. el sistema, por y Control de acceso
  • 34. Declaración de variables  Declaración de arrays  Los arrays se pueden declarar así: Arrays construidos legalmente Arrays construidos ilegalmente  Variables final  Una variable final no permite reasignar el valor de la variable una vez se a asignado. Capítulo 1 – Declaraciones y Control de acceso
  • 35. Declaración de variables Comportamiento de Comportamiento de un Comportamiento de una clase final método final una variable final Capítulo 1 – Declaraciones y Control de acceso
  • 36. Declaración de variables  Variables trasient  Las variables trasient indican que no se tendrán en cuenta al momento de serializar y deserializar la clase.  Variables volatile  Indica que para esta variable un hilo deberá comparar su copia privada con la copia maestra almacenada en memoria. Capítulo 1 – Declaraciones y Control de acceso
  • 37. Declaración de variables  Variables y métodos static  Cuando uno marca algo en static significa que en tiempo de ejecución corre antes de crearse la instancia de la clase y solo se ejecuta una sola vez. Estos bloques corren antes del constructor.  El nivel de static se puede aplicar a métodos, variables, clases internas, y bloques.  No pueden ser static constructores, clases externas, interfaces, métodos locales de las clases internas, variables locales, y variables locales Capítulo 1 – Declaraciones y Control de acceso
  • 38. Declaración de variables  Declaración de enums  Enum es una variable que corresponde a una lista enumerada de valores constantes. Se declara así  Estos no pueden ser declarados como private o protected.  Los enums son considerados como clases apartes, si va dentro de una clase sería como una clase interna, por lo tanto no puede declararse un enum dentro de un método Capítulo 1 – Declaraciones y Control de acceso
  • 39. Declaración de variables  Declaración de enums Capítulo 1 – Declaraciones y Control de acceso
  • 40. Declaración de variables  Declaración de constructores, métodos y variables en un enum  Como los enums son una especia de clase, entonces pues pueden tener constructores, métodos y variables  Constructores:  Nunca se puede invocar directamente un constructor de un enum, este se invoca automáticamente cuando se definen los valores  Pueden haber constructores con uno o más atributos, y pueden sobrescribirse los constructores Capítulo 1 – Declaraciones y Control de acceso
  • 41. Declaración de variables Capítulo 1 – Declaraciones y Control de acceso
  • 42. Preguntas de práctica Capítulo 1 – Declaraciones y Control de acceso
  • 43. Pregunta 1 Which is true? (Choose all that apply.)  A. "X extends Y" is correct if and only if X is a class and Y is an interface  B. "X extends Y" is correct if and only if X is an interface and Y is a class  C. "X extends Y" is correct if X and Y are either both classes or both interfaces  D. "X extends Y" is correct for all combinations of X and Y being classes and/or interfaces Capítulo 1 – Declaraciones y Control de acceso
  • 44. Respuesta 1  A es incorrecta porque las clases implementan interfaces no extienden de ellas.  B es incorrecta porque las interfaces solo heredan de otras interfaces  C es la correcta.  La D es incorrecta por las razones ya vista. Esta pregunta cubre el objetivo 1.2 Capítulo 1 – Declaraciones y Control de acceso
  • 45. Respuesta 2 Which method names follow the JavaBeans standard? (Choose all that apply.)  A. addSize  B. getCust  C. deleteRep  D. isColorado  E. putDimensions Capítulo 1 – Declaraciones y Control de acceso
  • 46. Respuesta 2  A es incorrecta porque la sentencia add solo se usa con los métodos listener  B es correcta porque usa get  C es incorrecta porque delete no esta dentro del estándar  D es correcta porque usa is, is se usa para variables booleanas  E es incorrecta porque put no esta dentro del estándar Capítulo 1 – Declaraciones y Control de acceso Esta pregunta cubre el objetivo 1.4
  • 47. Pregunta 3 1. class Voop { 2. public static void main(String [] args) { 3. doStuff(1); 4. doStuff(1,2); 5. } 6. // insert code here 7. } Which, inserted independently at line 6, will compile? (Choose all that apply.)  A. static void doStuff(int... doArgs) { }  B. static void doStuff(int[] doArgs) { }  C. static void doStuff(int doArgs...) { }  D. static void doStuff(int... doArgs, int y) { }  E. static void doStuff(int x, int... doArgs) { } Capítulo 1 – Declaraciones y Control de acceso
  • 48. Respuesta 3  A es correcta, pues cumple la sintaxis de los vararg  B es incorrecta, un array es un objeto, no sirve para llenarse como lo hace el código  C es incorrecta, esta mal declarado el vararg  D es incorrecta porque el vararg debe ser el último atributo de los argumentos del método  E es correcta, se pueden tener varios vararg en una lista de argumentos del método Esta pregunta cubre el objetivo 1.4 Capítulo 1 – Declaraciones y Control de acceso
  • 49. Pregunta 4 1. enum Animals { 2. DOG("woof"), CAT("meow"), FISH("burble"); 3. String sound; 4. Animals(String s) { sound = s; } 5. } 6. class TestEnum { 7. static Animals a; 8. public static void main(String[] args) { 9. System.out.println(a.DOG.sound + " " + a.FISH.sound); 10. } 11. } What is the result?  A. woof burble  B. Multiple compilation errors  C. Compilation fails due to an error on line 2  D. Compilation fails due to an error on line 3  E. Compilation fails due to an error on line 4  F. Compilation fails due to an error on line 9 Capítulo 1 – Declaraciones y Control de acceso
  • 50. Respuesta 4  A es correcta, los enums pueden tener constructores, y métodos, además se pueden instanciar como static  B es incorrecta, no se presentan errores de compilación  C es incorrecta, así se crean la elaboración de los atributos del enum, además la sentencia termina con ;  D es incorrecta, los enums pueden tener variables locales  E es incorrecta, los enums pueden tener constuctores  F es incorrecta, una clase main puede acceder a enum a través de una instancia estática. Capítulo 1 – Declaraciones y Control de acceso Esta pregunta cubre el objetivo 1.3
  • 51. Pregunta 5 1. package pkgA; 2. public class Foo { 3. int a = 5; 4. protected int b = 6; 5. public int c = 7; 6. } 3. package pkgB; 4. import pkgA.*; 5. public class Baz { 6. public static void main(String[] args) { 7. Foo f = new Foo(); 8. System.out.print(" " + f.a); 9. System.out.print(" " + f.b); 10. System.out.println(" " + f.c); 11. } 12. } What is the result? (Choose all that apply.)  A. 5 6 7  B. 5 followed by an exception  C. Compilation fails with an error on line 7  D. Compilation fails with an error on line 8  E. Compilation fails with an error on line 9  F. Compilation fails with an error on line 10 Capítulo 1 – Declaraciones y Control de acceso
  • 52. Respuesta 5  A es incorrecta, la aplicación no compila.  B es incorrecta, pues la aplicación arroja errores de compilación y no de ejecución.  C es incorrecta, la clase Foo es pública por lo tanto puede ser vista por cualquier otra clase.  D es correcta, las clases con acceso por defecto no pueden ser vistas por clases de otros paquetes, arroja error de compilación.  E es correcta, las clases con acceso protected solo pueden ser vistas por clases externas pero solo por sus hijas, error de compilación  F es incorrecta, las variables públicas se pueden ver por cualquier otra clase Esta pregunta cubre el objetivo 1.1 Capítulo 1 – Declaraciones y Control de acceso
  • 53. Pregunta 6 1. public class Electronic implements Device { public void doIt() { } } 2. 3. abstract class Phone1 extends Electronic { } 4. 5. abstract class Phone2 extends Electronic { public void doIt(int x) { } } 6. 7. class Phone3 extends Electronic implements Device { public void doStuff() { } } 8. 9. interface Device { public void doIt(); } What is the result? (Choose all that apply.)  A. Compilation succeeds  B. Compilation fails with an error on line 1  C. Compilation fails with an error on line 3  D. Compilation fails with an error on line 5  E. Compilation fails with an error on line 7  F. Compilation fails with an error on line 9 Capítulo 1 – Declaraciones y Control de acceso
  • 54. Respuesta 6  A es correcta, las clases y las interfaces estan correctamente implementadas.  B es incorrecta, una clase puede implementar una interface sin ningún problema.  C es incorrecta, una clase abstracta puede existir sin métodos abstractos, además la clase padre implementó el método de la interface  D es incorrecta, una clase abstracta puede sobrescribir un método como una clase normal.  E es incorrecta, una clase puede heredar de una clase e implementar una interface al mismo tiempo, además el método de la interface lo implementó la clase padre.  F es incorrecta, la interface esta correctamente implementada Esta pregunta cubre el objetivo 1.2 Capítulo 1 – Declaraciones y Control de acceso
  • 55. Pregunta 7 4. class Announce { 5. public static void main(String[] args) { 6. for(int __x = 0; __x < 3; __x++) ; 7. int #lb = 7; 8. long [] x [5]; 9. Boolean []ba[]; 10. enum Traffic { RED, YELLOW, GREEN }; 11. } 12. } What is the result? (Choose all that apply.)  A. Compilation succeeds  B. Compilation fails with an error on line 6  C. Compilation fails with an error on line 7  D. Compilation fails with an error on line 8  E. Compilation fails with an error on line 9  F. Compilation fails with an error on line 10 Capítulo 1 – Declaraciones y Control de acceso
  • 56. Respuesta 7  A es incorrecta, el código no compila correctamente  B es incorrecta, una variable puede empezar con línea al piso _  C es correcta, una variable no puede empezar con simbolo #, solo se vale letras, simbolo pesos ($), o línea al piso (_)  D es correcta, un array no puede declararse con el tamaño, debería ser long [] x [];  E es incorrecta, por el mismo motivo del punto anterior  F es correcta, un enum no puede declararse dentro de un método. Esta pregunta cubre el objetivo 1.3 Capítulo 1 – Declaraciones y Control de acceso
  • 57. Pregunta 8 3. public class TestDays { 4. public enum Days { MON, TUE, WED }; 5. public static void main(String[] args) { 6. for(Days d : Days.values() ) 7. ; 8. Days [] d2 = Days.values(); 9. System.out.println(d2[2]); 10. } 11. } What is the result? (Choose all that apply.)  A. TUE  B. WED  C. The output is unpredictable  D. Compilation fails due to an error on line 4  E. Compilation fails due to an error on line 6  F. Compilation fails due to an error on line 8  G. Compilation fails due to an error on line 9 Capítulo 1 – Declaraciones y Control de acceso
  • 58. Respuesta 8  A es incorrecta, pues las posiciones en los arreglos empiezan desde 0  B es correcta, pues es la variable que corresponde a la posicion 2 del array.  C es incorrecta, la salida si se puede predecir  D es incorrecta, el enum esta correctamente declarado  E es incorrecto, este es un for simplificado  F es incorrecto, el método values del enum, retorna un arreglo de valores  G es incorrecto, se puede obtener de esta forma un valor de un array Esta pregunta cubre el objetivo 1.3 Capítulo 1 – Declaraciones y Control de acceso
  • 59. Pregunta 9 4. public class Frodo extends Hobbit { 5. public static void main(String[] args) { 6. Short myGold = 7; 7. System.out.println(countGold(myGold, 6)); 8. } 9. } 10. class Hobbit { 11. int countGold(int x, int y) { return x + y; } 12. } What is the result?  A. 13  B. Compilation fails due to multiple errors  C. Compilation fails due to an error on line 6  D. Compilation fails due to an error on line 7  E. Compilation fails due to an error on line 11 Capítulo 1 – Declaraciones y Control de acceso
  • 60. Respuesta 9  A es incorrecta, el código no compila bien y jamás da 13  B es incorrecta, solo presenta un error de compilación.  C es incorrecta, el valor está dentro del rango de respuestas.  D es correcta, no se puede llamar un método no estático en un método estático.  E es incorrecta, el método esta correctamente implementado Esta pregunta cubre el objetivo 1.4 Capítulo 1 – Declaraciones y Control de acceso