Resumen de objetivos para el SCJP 6.0
Autor:
- Mayer Horna García
Con el fin de aprender todos, cualquier aporte a este documento reenviarlo a:
[email protected]
Copyright © 2010
1
<CAP1: Declarations and Access Control>
<CERTIFICATION OBJETIVES>
<OBJECTIVES>
<OBJECTIVE 1.3 AND 1.4: Identifiers & JavaBeans>
<SUMARY>
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.
</SUMARY>
1. Los identificadores únicamente pueden empezar por letras, guión bajo(_) o símbolo de
dólar($).
Ejemplo de identificadores legales:
int _a;
int $c;
int ______2_w;
int _$;
int this_is_a_very_detailed_name_for_an_identifier;
Ejemplo de identificadores ilegales:
int :b;
int -d;
int e#;
int .f;
int 7g;
int double;
2. Palabras reservadas: Son todas las palabras propias del lenguaje y que no se pueden
utilizar para declarar atributos, métodos, clases, etc. Son escritas en minúsculas:
abstract
***
assert
boolean
break
byte
case
catch
char
class
*
const
continue
default
do
double
else
****
enum
extends
final
finally
float
for
*
goto
if
implements
import
instanceof
int
interface
long
native
new
package
private
protected
public
return
short
static
**
strictfp
super
switch
synchronized
this
throw
throws
transient
try
void
volatile
while
* not used
** added in 1.2
*** added in 1.4
**** added in 5.0
</OBJECTIVE 1.3 AND 1.4: Identifiers & JavaBeans>
2
<OBJECTIVE 1.1: Declare Classes>
<SUMARY>
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)..
</SUMARY>
3. Únicamente puede haber una clase pública por fichero java. El nombre del fichero debe
coincidir con el de la clase pública. Puede haber más de una clase default en el mismo
fichero.
4. En un fichero sin clases públicas, las clases no tienen restricción de nombre, no es
necesario que coincida el nombre de una clase con el nombre del fichero.
5. Los comentarios pueden aparecer en cualquier parte del fichero java.
6. Las clases únicamente pueden ser public o default (no poner nada delante del class).
7. Niveles de acceso: (de mayor a menor restricción) -> private (acceso únicamente desde la
propia clase), default (acceso desde la propia clase y desde el mismo paquete), protected
(acceso desde la propia clase, paquete y subclase), public (acceso desde cualquier
paquete). Nota: En Java, hay 4 niveles de acceso, pero solo 3 modificadores de acceso
(Ver punto 22).
8. Las clases también pueden ser declaradas como final (no se puede extender de ella),
abstract (no puede ser instanciada, solo extender de ella) y strictfp (los métodos de la
clase seguirán las reglas del IEEE 754 para los números en coma flotante, solo se utiliza
para clases o métodos, no para variables). Estos 3, son considerados como modificadores
de clase (no de acceso). Pueden acompañar a cualquiera de los modificadores de acceso,
p.e: public final..., pero no pueden combinarse entre ellos. Por ejemplo esto es incorrecto:
final abstract. Sólo combinar strictfp con cualquier de éstos dos, Por ejemplo, esto es
correcto : final strictfp o public final strictfp.
9. Métodos y atributos (miembros de una clase): Pueden tener los 4 niveles de acceso. Las
variables de instancia son siempre inicializados a sus valores por defecto. Los métodos
pueden tener final o abstract. Si tiene final significa que no va a poder ser sobreescrito
por alguna subclase. Si es abstract significa que es un método abstracto (sin cuerpo, solo
declaración), recordar que solo las clases abstractas pueden tener métodos abstractos.
No existen variables de instancia, ni locales que puedan ser abstractos, esto solo se aplica
a métodos. Las variables de instancia y locales si pueden tener final.
3
Ver imagen del punto 24 para que veas que modificador puede ser aplicado a
variables y/o métodos.
10. El modificador static sirve para que un miembro (atributo o método) sea de clase, es decir,
todos las instancias de esa clase compartirán el mismo valor de la variable (en caso de ser
un atributo) o el mismo método.
En el caso de las variables es como si las consideráramos variables globales.
Puede estar antes o después del modificador de acceso, por ejemplo:
static public void main(String[] a) es lo mismo que decir
public static void main(String[] a)
11. Una clase únicamente puede heredar de otra (herencia simple) e implementar múltiples
interfaces.
12. Siempre que se herede de una clase, se tendrá acceso sólo a todos los miembros
declarados como public, protected y también se tendrá acceso a los miembros default si
la superclase de la que extendemos está en el mismo paquete de la que se hereda. Si una
clase hija en diferente paquete que el padre, instancia un objeto de la clase padre, no va a
poder acceder a los miembros (variables de instancia y métodos) de la clase padre si estas
están con modificador de acceso: protected
13. Todas las clases, incluyendo las abstractas, tienen al menos un constructor. Aunque no lo
especifiquemos directamente, el compilador insertará el constructor por defecto en caso de
que nosotros no insertemos uno. El constructor por defecto es de modificador de acceso
públic, pero el programador puede poner
cualquier otro modificador de
acceso(private,protected,<default>) .
14. Las clases abstractas no se pueden instanciar, es decir no se pueden crear objetos de esa
clase con “new”.
15. Cuando se crea un objeto de una clase, se llamará a uno de sus constructores, con o sin
argumentos en función de la instanciación del objeto. En la primera línea de cada
constructor el compilador insertará una llamada al constructor (super()) por defecto de la
superclase (la superclase de todas las clases es Object). Unicamente se puede hacer una
llamada a un constructor dentro de otro. Si creamos una clase con un constructor que
recibe algún argumento, el compilador ya no nos insertará el constructor por defecto. Los
constructores no se heredan.
4
</OBJECTIVE 1.1: Declare Classes>
<OBJECTIVE 1.1 AND 1.2: Declare Interfaces>
<SUMARY>
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.
</SUMARY>
16. Las
interfaces únicamente declaran sus métodos
(no
los
implementan). Las
variables(constantes) son implícitamente public, final y static. Los métodos son
implícitamente public abstract. Las interfaces pueden heredar de otras interfaces, tienen
herencia múltiple (entre interfaces extends nunca implements). Pensar en las interfaces
como clases 100 % abstractas.
Una interface solo puede extender de una o muchas interfaces.
Las intefaces pueden ser utilizadas polimórficamente.
Las interfaces son implícitamente abstractas, osea, el siguiente código es legal:
public abstract interface Rollable
17. Si desde una clase no abstracta se implementa una interface, es obligatorio implementar
todos los métodos de esa interfaz.
En cambio las clases abstractas no tienen la obligación de implementar los métodos de la
interface, eso sí, la primera clase no abstracta que extienda de ella, deberá implementar
todos sus métodos declarados como abstractos y también los métodos de la interfaz que
implementó.
</OBJECTIVE 1.1 AND 1.2: Declare Interfaces>
5
<OBJECTIVE 1.3 AND 1.4: Declare Class Members>
<SUMARY>
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.
</SUMARY>
18. native, solo se utiliza para métodos y no tiene cuerpo(igual que los métodos abastractos):
public native void prestarSaludo();
19. Sobre los métodos que aceptan argumentos variables(VAR-ARGS): Estos métodos
aceptan cero o más argumentos en su llamada, su sintaxis es: nombreMetodo(int ... x) ó
nombreMetodo(long x, float y, int ... z). Si el método debe aceptar argumentos normales,
los argumentos variables siempre deben ir al final y solo se puede tener un var-args en un
método.
20. Es legal que un método se llame como el constructor, pero es una falta grave llamar un
método así.
21. Las variables dentro de los métodos deben s
Comentarios de: Resumen de objetivos para el SCJP 6.0 (0)
No hay comentarios