viernes, 7 de agosto de 2009

1. Declarations and Access Control . 1.2 Declare Classes (Exam Objective 1.1)

1.2 Declare Classes (Exam Objective 1.1)
Cuando escribimos código en java, lo que estamos escribiendo es justamente clases o interfaces, dentro de estas clases como conocemos pueden haber variables y métodos(y algunas otras cosas más), la forma en la que declaramos las clases, métodos y variables afecta en forma sustancial el comportamiento del código, por ejemplo un método público puede ser accedido desde código ejecutandose en cualquier lugar en tu aplicación, haciendo el método privado lo oculta a cualquier posible llamada(excepto a la clase en la cuál fué declarada).

Source File Declaration Rules - Reglas de declaración de archivos fuente


1. Solo puede haber una clase pública por archivo fuente.
2. Los comentarios pueden aparecer al inicio o al fin de cualquier línea en el archivo de código fuente.
3. Si es que hay una clase pública el nombre del archivo debe de coincidir con el nombre de la clase, por ejemplo si hay una clase declarada public Casa entonces el nombre del archivo deberá ser Casa.java
4. Si la clase es parte de un paquete, la declaración del paquete debe ser la primera línea en el archivo de código fuente, antes de cualquier declaración de importacion import que pueda estar presente.
5. Si hay declaraciones de importacion import, estas declaraciones deben de ir entre la declaración del paquete(si es que lo hubiera) y la declaración de la clase.
6. Declaraciones de importación import y de paquetes package aplican a todas las clases dentro de un archivo de código fuente, en otras palabras, no hay manera para declarar multiples clases en un archivo y tenerlos en diferentes paquetes o usar diferentes importaciones.
7. Un archivo puede tener más de una clase no pública.
8. Archivos con clases no públicas pueden tener un nombre que no coincide con cualquiera de las clases en el archivo.

Class Declarations and Modifiers -Declaraciones de clases y modificadores

1. Modificadores de acceso: public, protected, private
2. Modificadores de no-acceso: strictfp, final y abstract

Class Access - Acceso de Clase
Que es lo que significa acceder a una clase?, cuando decimos que el código de una clase(class A) a accedido a otra clase(class B) esto significa que la clase A puede hacer cualquiera de las 3 siguientes acciones:

Crear una instancia de la clase B.
class A{
B b = new B( );
}


Extender la clase B.
class A extends B{ }

Accesar ciertos métodos y variables de la clase B, dependiendo del control de acceso de estos métodos y variables.
class A{
B b = new B( );
A(){
b.method();
}
}


Default Access - Acceso por Defecto.

Una clase con default access no tiene un modificador de acceso que le precede en su declaración, es decir tiene la forma class X{ } y no public class X { } este es el control de acceso que se obtiene cuando no escribimos el modificador en la declaración, las clases con default access pueden ser vistas como clases con nivel de acceso a nivel de paquete, porque una clase con default access puede ser vista solo por clases dentro del mismo paquete. Por ejemplo si tenemos una clase llamada Persona en el paquete miempresa.core declarada de la siguiente manera:

package cert;
class Beverage { }


Usando la clase anterior pero en otro paquete:

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


al compilar la clase Beverage : no hay problema.
al compilar la clase Tea: sal el mensaje.
Can't access class cert.Beverage. Class or interface must be
public, in same package, or an accessible member class.
import cert.Beverage;


Public Access - Acceso Público.
Una declaración de clase con la palabra clave public da a todas las clases de todos los paquetes acceso a esta clase pública.
package cert;
public class Beverage { }

entonces esta clase puede ser accedida desde cualquier clase en cualquier paquete desde mi aplicación. Si tratamos de usar la clase pública desde otro paquete entonces debemos de importar dicha clase con la palabra clave import

Other (Nonaccess) Class Modifiers - Otros Modificadores de Clase que no son de Acceso.
Podemos modificar la declaración de una clase con las palabras clave final, abstract, or strictfp
Final Classes - Clases Finales.
Cuando es usada en la declaración de una clase, la palabra clave final significa que la clase no puede ser extendida, en otras palabras ninguna clase puede heredar o extender una clase declarada final si intentamos hacerlo en compilador nos retornará un error.

Vamos a modificar nuestro ejemplo class Beverage poniendo la palabra clave final.

package cert;
public final class Beverage {
public void importantMethod() { }
}


Ahora,compilamos Tea subclass:
package exam.stuff;
import cert.Beverage;
class Tea extends Beverage { }

Muestra el error:
Can't subclass final classes: class
cert.Beverage class Tea extends Beverage{
1 error


Abstract Classes - Clases Abstractas.
Una clase abstracta no puede nunca ser instanciada, su único proposito es ser extendida.
public abstract class Car{ }

no podemos hacer esto:
Car p = new Car();
sale el error:
AnotherClass.java:7: class Car is an abstract
class. It can't be instantiated.
Car x = new Car();
1 error


lo correcto:
public class Toyota extends Car{ }

Bueno este es parte del primer capitulo conforme siga leyendo el libro tratare de repasar y creando mas post.

No hay comentarios: