Section1 scjp6.0
-
Upload
daniel-martinez -
Category
Education
-
view
51 -
download
3
description
Transcript of Section1 scjp6.0
![Page 2: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/2.jpg)
Section 1: Declarations, initialization and Scoping
![Page 3: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/3.jpg)
3
SCJP: Section 1 Section 1: Declarations, Initialization and Scoping
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).
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.
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.
![Page 4: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/4.jpg)
4
SCJP: Section 1 Section 1: Declarations, Initialization and Scoping (Continuación)
Develop code that declares both static and nonstatic methods, and if appropriate use method names that adhere to the JavaBeans naming standards. Also develop code that declares and uses a variablelength argument list.
Given a code example, determine if a method is correctly overriding or overloading another method, and identify legal return values (including covariant returns), for the method.
Given a set of classes and superclasses, develop constructors for one or more of the classes. Given a class declaration, determine if a default constructor will be created, and if so, determine the behavior of that constructor. Given a nested or nonnested class listing, write code to instantiate the class.
![Page 5: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/5.jpg)
5
Modificadores en JavaEjercicio en grupo
Modifiers Top Class Inner Class Interface Top Enum Method Constructorprivatedefaultprotectedpublicstaticfinalabstracttransientvolatile
Instance Enum
Instance Variable
Local Variable
![Page 6: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/6.jpg)
6
Modificadores en JavaSolución ejercicio en grupo
Modifiers Top Class Inner Class Interface Method Constructorprivate NO SI NO NO SI SI SI SI NOdefault SI SI SI SI SI SI SI SI NOprotected NO SI NO NO SI SI SI SI NOpublic SI SI SI SI SI SI SI SI NOstatic NO SI NO NO SI SI NO SI NOfinal SI SI NO NO NO SI NO SI SIabstract SI SI SI NO NO SI NO NO NOtransient NO NO NO NO NO NO NO SI NOvolatile NO NO NO NO NO NO NO SI NO
Top Enums
Instance Enum
Instance Variable
Local Variable
![Page 7: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/7.jpg)
7
Declaración y control de accesoModificadores y declaración de clases.
Reglas básicas
Solo puede existir una clase “public” por archivo fuente.
El nombre del archivo deberá de coincidir con el nombre de la clase publica.
La sentencia “package” (si la hay) deberá colocarse en la primera línea.
Si existen instrucciones “import” estas deberán de situarse entre la instrucción “package” y la declaración de clase.
![Page 8: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/8.jpg)
8
Sintaxis en ClasesRegla:
[ access modifier ] [modifier ]* class NameClass{
}
Ejemplos:
public abstract class Person{}
strictfp abstract class TaxesType{}
public class Vehicle{}
class public WrongExample{} //Error de Compilación
![Page 9: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/9.jpg)
9
Sintaxis VariablesVariables de Instancia:
[ access modifier ] [modifier ]* type nameVariable [ = value] ;
Ejemplos:
public class Person{
String firstName ;
int age = 0;
public static final int idPerson;
//...
}
![Page 10: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/10.jpg)
10
Sintaxis VariablesVariables Locales:
[modifier final] type nameVariable [ = value];
Ejemplos:
public void method(){
int a = 10;
final double interestRate = 0.05 ;
private int c = 100; //Error de Compilación
}
![Page 11: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/11.jpg)
11
Sintaxis MétodosMétodos
[access modifier] [modifier]* returnType
nameMethod( [ arguments]*){ }
Ejemplos:
public void methodA(int a, float f){ }
public final int methodB(){ return 100;}
public static void main(String args[]){ }
public native void methodC();
public abstract void methodD();
![Page 12: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/12.jpg)
12
Métodos static El modificador static es utilizado en declaración de: variables,
métodos, nested classes, y nested enum. Los miembros declarados con el modificador static existen para toda la clase, es decir NO se asocian a ninguna instancia / objeto en particular.
No necesario crear instancias para accesar miembros static.
Accesados por medio del nombre de la clase.
public class CasaGeo{
private static int noHabitaciones=1;
}
En otro código podemos usar:
System.out.println(CasaGeo.noHabitaciones);
Los Métodos static, solo pueden accesar a variables locales y variables static de la clase que lo define.
![Page 13: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/13.jpg)
13
Identificadores Válidos
Identificador:
Nombre asignado a una variable, clase o método.
Reglas:
Caracter inicial: Letras, '_', '$'.
Subsecuentes caracteres pueden ser dígitos.
Sensibles a mayúsculas
No hay máximo en longitud
No utilizar palabras reservadas como identificadores.
![Page 14: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/14.jpg)
14
Java BeansComponentes de sw reusables que pueden ser manejados por una herramienta de desarrollo.
Convención:
La clase debe ser serializable.
Constructor sin argumentos.
Propiedades accesibles por medio de los métodos:
getX()
setX()
isX(). Utilizado para valores booleano.
![Page 15: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/15.jpg)
15
Sintaxis ConstructoresConstructores
[access modifier] NameClass ( [ arguments]*){ }
Ejemplos:
public class Account{
private double balance ;
public Account (){ }
protected Account(double pBalance){
balance = pBalance;
}
}
![Page 16: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/16.jpg)
16
Constructor por defaultEn todas las clases SIEMPRE existe al menos un constructor
Si el programador no define un constructor, automáticamente Java genera un constructor por default
El constructor default tiene:
Mismo modificador de acceso que la clase
No define argumentos
Esta vacío
![Page 17: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/17.jpg)
17
Ejemplo de constructor DefaultCódigo con constructor Default
import java.util.*;
public class Customer{
private String firstName;
private String lastName;
List accounts;
}
public class TestCustomer{
public static void main(String args[]){
Customer obj = new Customer();}
}
![Page 18: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/18.jpg)
18
Estructura PackageSe utiliza para agrupar un conjunto de clases
Hace referencia de manera lógica a un directorio físico en el disco duro
Solamente puede existir una y solo una declaración de package por archivo .java
Si existe la declaración, debe ser la primer línea en el archivo, si se omite se usa el package default
![Page 19: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/19.jpg)
19
Estructura ImportPermite indicar la ruta de paquetes en donde se encontraran las clases a utilizar
Puede utilizarse de dos maneras:
import packageNameA.pckageNameN.*;
o bien:
import packageNameA.packageNameN.NameClass;
Es utilizando a través del Dynamic Class Loader
![Page 20: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/20.jpg)
20
Estructura de ClasesEjemplo de Clase Java
//Customer.java
package com.ses.scjp.domain;
import java.util.*;
import java.util.Locale;
public class Customer{
private String firstName ;
private String lastName;
List accounts;
//...
}
![Page 21: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/21.jpg)
21
Statics ImportCaracterística de Java, agregada a la versión 1.5
Se utiliza para importar miembros estáticos
Útil para referencia miembros estáticos de clase, sin necesidad de utilizar su nombre completamente calificado
Solo importa los miembros estáticos de una clase
Si se usa debe usarse adicionalmente el import nostatic
Su sintaxis es:
import static package.subPackage.NameClase.*;
o bién:
import static package.subPackage.NameClase.memberStatic;
![Page 22: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/22.jpg)
22
Ejemplo de Static ImportCódigo Java 1.6
import static java.lang.System.*;
import static java.lang.Math.*;
public class TestStaticImport{
public static void main(String args[]){
out.println("Numero aleatorio:" + random());
}
}
![Page 23: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/23.jpg)
23
Clases AbstractasNO se puede crear instancias de clases abstractas
Pueden declarar 1 ó N métodos abstractos
Pueden declarar atributos y métodos concretos
Los constructores son permitidos pero no se pueden invocar directamente, es decir, se invocan desde los constructores de sus subclases.
![Page 24: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/24.jpg)
24
Ejemplo de Clase Abstractapublic abstract class Figura{
protected double area;
protected abstract void calculaArea();}
public class Circulo extends Figura{
protected void calculaArea(){ System.out.println(“ PI * R2”);
}}
![Page 25: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/25.jpg)
25
InterfacesPermite emular la herencia múltiple.
Solamente definen métodos abstractos y variables:
public static final type nameVarible = value;
No se permiten los constructores
Una Java interface puede extender a otras interfaces
Una clase puede implementar a 1 ó N interfaces
![Page 26: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/26.jpg)
26
Ejemplo de InterfaceCódigo con Java Interface
public interface Flyer{
public void land();
public void takeOff();
public void fly();
}
public class Aircraft implements Flyer{
public void land(){ }
public void takeOff(){ }
public void fly(){ }
}
![Page 27: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/27.jpg)
27
Ejemplo de InterfaceContinuación (1)...
public class Helicopter implements Flyer{
public void land(){ }
public void takeOff(){ }
public void fly(){ }
}
public class Bird extends Animal implements Flyer{
public void land(){ }
public void takeOff(){ }
public void fly(){ }
}
![Page 28: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/28.jpg)
28
Ejemplo de InterfaceContinuación (2)...
public class ClassA extends SuperClassA implements
InterfaceA, InterfaceB{
}
public interface Remote{ }
public interface RemoteHandler extends Remote{
}
![Page 29: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/29.jpg)
29
Nested ClasesClases declaradas dentro de la encapsulación de otra clase
Existen 3 tipos básicos de clases Nested
Clases Nested declaradas como variable de instancia
Clases Nested Locales declaradas dentro de un Método
Clases Nested Anónimas
![Page 30: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/30.jpg)
30
Nested Clases Variable InstanciaLas clases Nested declaradas como variable de instancia, pueden tener cualquier modificador de acceso
Pueden utilizar las variables de instancia definidas en la clase wrapper
Fuera de la encapsulación de la clase externa, es posible crear instancias de una clase Nested, pero requiere una sintaxis especial.
![Page 31: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/31.jpg)
31
Ejemplo Clase Nested InstanciaCódigo de Nested Class declarada como variable de instancia
public class OuterClass{
private int a = 10;protected class NestedClass{
public void metodo(){ System.out.println(“El valor de a=” + a);
}}
}
![Page 32: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/32.jpg)
32
Ejemplo Clase Nested InstanciaCódigo continuación...
public class TestNested{
public static void main(String args[]){
OuterClass outer = new OuterClass(); OuterClass.NestedClass nested = outer.new
NestedClass();
nested.method();
}
}
![Page 33: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/33.jpg)
33
Clases Nested LocalesDeclaradas dentro de un método
No pueden tener ningún modificador de acceso
Sólo pueden ser instanciadas dentro de la encapsulación del método
Si utilizan variables del método wrapper, éstas deben ser declaradas como final
![Page 34: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/34.jpg)
34
Ejemplo clase Nested LocalCódigo Clase Nested Local
public class TestNestdLocal{
public static void main(String args[]){
final int a = 110;
class NestedClass{
public void method(){
System.out.println("El valor de a=" + a);
}
} NestedClass nested = new NestedClass();
nested.method();
} }
![Page 35: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/35.jpg)
35
Clases Nested AnónimasDeclaradas al momento de invocar el constructor
No se define un nombre para la clase Nested, solamente se define el cuerpo de la clase seguido del constructor
No se puede reutilizar el código de una clase anónima, para crear múltiples instancias de la clase nested anónima
![Page 36: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/36.jpg)
36
Ejemplo Clase Nested AnónimaCódigo Clase Nested Anónima
public class Main{
static Object obj = new Object(){
public String toString(){
return "Ejemplo de Clase Nested Anonima...";
}
};
public static void main(String args[]){
System.out.println(obj.toString());
}
}
![Page 37: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/37.jpg)
37
Java EnumerationsCaracterística de Java, agregada a la versión 1.5
Permite definir conjuntos de elementos de manera typesafe
Pueden ser usadas para hacer referencia a conjuntos de elementos finitos
Pueden contener métodos
Pueden ser usadas como argumentos en estructuras de control switch
![Page 38: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/38.jpg)
38
Java EnumerationsContinuación...
No se pueden instanciar
Si son públicas deben se declaradas en un archivo con el mismo nombre que la enum
No se permiten enums Locales a métodos
![Page 39: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/39.jpg)
39
Ejemplo de EnumerationsCódigo que muestra una Enumeration
public class TestEnums{
enum Week{
MONDAY, TUESDAY, WEDNESDAY, THURSDAY,
FRIDAY, SATURDAY, SUNDAY
}
public static void main(String args[]){
Week today = Week.FRIDAY;
System.out.println("Hoy es:" + today);
}
}
![Page 40: Section1 scjp6.0](https://reader034.fdocuments.us/reader034/viewer/2022052600/5572c86cd8b42abb378b4be2/html5/thumbnails/40.jpg)
40
Fin de Sección 1: Declarations, Initialization and Scoping
● Notas