Está en la página 1de 13

Todas las clases que hereden de una superclase poseern los mtodos que esta defina, sin embargo

estos pueden sobreescribirlos para adaptarlos a sus necesidades, o principales caractersticas que destaquen de estas. Por ejemplo, la clase Carro puede definir las caractersticas de todos los vehculos, pero la subclase Ferrari deber sobre escribir el mtodo aceleracin. Las interfaces son como superclases 100% abstractas. Estas slo definen lo que las subclases deben hacer, pero no cmo lo deben hacer. Las constantes en java, son creadas por hacer a las variables final y static ESTO_VARIABLE Class declaration and modifiers Cuando se declara una clase, esta debe de tener definido un modificador, el cual puede ser de dos tipos: Modificadores de acceso : public, protected, private. Modificadores de no-acceso: strictfp, final, abstract.

Existen cuatro niveles de acceso (Access control) pero slo tres son modificadores de acceso (access modifier) porque uno es por default o packages accesss. Declaraciones de archivo de cdigo: Puede haber slo una clase pblica por archivo de cdigo. Los comentarios pueden aparecer al inicio o final de cualquier lnea de cdigo Si hay alguna clase pblica en el archivo, este deber llevar su nombre Si un archivo no tiene alguna clase pblica, no importa el nombre que se le d al archivo. Si la clase pertenece a un paquete, el packages deber ser la primera lnea, seguido de cualquier import y poseteriormente la declaracin de la clase, si no existe package, el import ser la primera, y de no existir ni packages o import, se inicia con la declaracin de la clase. Un archivo puede tener ms de una clase no pblica.

Cada mtodo, clase o variable de instancia que se declara, tiene su modificador de acceso. Para el nombramiento de paquetes, sun recomienda una nomenclatura, de dominio invertido Clases accesss Cuando tienes una clase A que tiene acceso a una clase B, se dice que A puede hacer tres cosas: Crear una instancia de B Extiende como subclase de B Tiene acceso a ciertos mtodos y variables de B, dependiendo del

Access significa visibilidad. Si una clase no puede ver a otra, esta jams podr tener acceso a sus mtodos o variables. DEFAULT ACCESS Una clase con default Access es aquella que no tiene modificador precedindola. El modificador default, se ve como un packages-level- Access porque una clase en un paquete slo puede ser accedida por las dems clases dentro del mismo paquete. Para que una clase en diferente paquete tenga acceso a otra clase en otro paquete, la clase a la que se quiere acceder debe ser declarada public. E importar el paquete en el archivo de la clase que desea acceder. PUBLIC ACCESS Una clase declarada como pblica (public) da acceso a las dems clases de todos los paquetes. NONACCESS MODIFIERS Strictfp, final, abstract Se puede mezclar public final una clase, final strictfp, pero nunca final abstract.

IEEE 754 estndar FINAL CLASSES Cuando la palabra final es usada en la declaracin de una clase, significa que la clase no puede ser accedida por cualquier otra clase. Nunca nunca nunca, otra clase podr heredar de una clase declarada como final, sera un error de compilacin. ABSTRACT CLASSES Jams pueden ser instanciadas. Su nico propsito es ser extended. Los mtodos marcados como abstractos, terminan en ; y no en {} Si los mtodos estn dentro de una clase abstracta, entonces ambos deben ser abstractos. (mtodos y clase) Siempre que un mtodo sea abstract, la clase entera debe ser marcada como abstracta. Si se va a convertir un mtodo abstracto a uno no abstracto, entonces se debe camibiar el ; al final por {}.

Sin embargo se pueden poner mtodos no abstractos en una clase abstracta. No se pueden marcar clases final y abstrac, son opuestas . Una clase abstract debe ser subclased, una clase final no debe ser subclased. Si se hace esto en una declaracin de clase se provocar un error de compilacin.

DEFINICIN DE INTERFACES Cuando se define una interfaz, se est describiendo qu es lo que una clase debe hacer, pero no el cmo lo debe hacer. Cualquier clase que implemente una interfaz, debe estar de acuerdo en escribir un cdigo para los mtodos declarados en la interfaz. O sea, decirle cmo hacerlo. Es decir, cualquier clase que quiera ser tratada como una cosa Bounceable ( o como se llame la interfaz) debe proveer el cdigo para los mtodos de la interfaz. Piensa en una interfaz como una clase abstracta 100% Las interfaces definen mtodos abstract, y terminan en ; en vez de {} ( como ya lo haba ledo antes) A diferencia de las clases abstractas que definen tanto mtodos abstractos como no abstractos, una interfaz slo puede definir mtodos abstractos. La declaracin de mtodos y variables en interfaces tienen reglas Todos los mtodos en una interfaz son implcitamente abstract y public . jams static Todas las variables declaradas en una interfaz deben ser implcitamente public, static y final. Es decir que en una interfaz, se declaran CONSTANTES y no variables de instancia. Una interfaz se declara con la keyword interface, extiende una o ms interfaces pero no puede implementarlas.

El marcador abstract en la declaracin de una interfaz es implcito, as que se considera redundante escribirlo. No as el public, ya que es necesario para que esta pueda ser implementada. Por otro lado en los mtodos, tanto public como abstract s son implcitos, as que no es necesario escribirlos. CONSTANTES EN INTERFAZ Existe una regla para las constantes en las interfaces: Todas las constanstes en una interfaz deben ser:

Publiic Static Final

Al declarar una constante en una interfaz, se considera que cualquier clase que implemente esta, podr tener acceso a sus constantes. Entonces, al ser toda constante declarada en una interfaz public stati final, esto est implcito y se puede o no escribir. Entonces, cualquier variable declarada en la interfaz, es automticamente una constante, por lo que nunca se podr modificar en alguna clase que lo implemente, ya que esto no compilara. ACCESS MODIFIERS Una clase slo puede tener dos modificadores de acceso: public o default, los modificadores son cuatro: Public Private Default protected

una clase trata de acceder a un mtodo o variable de otra clase, a travs del operador (.)

PUBLIC MEMBERS Cuando un mtodo o variable es declarado pblico, esto significa que cualquier clase, perteneciente a el mismo paquete o no, puede acceder a ellos. Hay tres maneras de acceder a un mtodo. Invocando un mtodo declarado en la misma clase Invocando al mtodo usando una referencia de la clase Invocando al mtodo mediante herencia.

Si un mtodo o variable son invocados sin el operador (.), significa que el mtodo o variable pertenecen a la clase en dnde se ve ese cdigo. Tambin significa que el mtodo o variable son implcitamente accesados usando la referencia this es decir: Escribir this.doRooThings(), es lo mismo que slo escribir doRooThings() La referencia this siempre hace referencia al objeto en ejecucin actual PRIVATE MEMBERS Los miembros declarados PRIVATE no pueden ser accedidos en el cdigo de cualquier otra clase msque en la de la clase en la cual el miembro fue declarado. Si un miembro privado es intentado llamar desde cualquier otra clase que no es en la que fue declarado, se producir un error de compilacin. Un miembro privado es invisible a cualquier cdigo fuera de su propia clase. Si un miembro es declarado private, una subclase no puede heredarlo.

En la prctica es siempre mejor mantener las variables como private or protected Si se requiere que esas variables sean cambiadas, reajustadas o ledas, se deben usar mtodos pblicos de acceso. Estos mtodos en cualquier otra clase deben preguntar sobre get or set una variable, en vez de acceder directamente. Estos mtodos se les llama getters y setters (data protection = encapsulation) PROTECTED AND DEFAULT METHODS Los niveles de acces control default y protected son casi idnticos: Default: puede ser accedido slo si la clase que intenta acceder a l, pertenece al mismo paquete. Protected: puede ser accedido a travs de herencia, por una subclase, incluso si la subclase est en diferente package. Protected = inheritance Para una subclase fuera del paquete donde es declarado un miembro protected, slo puede acceder a este miembro a travs de herencia. Jams se podr acceder al miebro a travs de una referencia a la clase padre. LOCAL VARIABLES AND ACCESS MODIFIERS Los modificadores de acceso no pueden ser aplicados a variables locales. Variables de instancia se declaran en clases Variables locales, se declaran en mtodos. Cualquier FINAL METHODS Un mtodo marcado como final est protegido contra ser overridden FINAL ARGUMENTS En un mtodo sus argumentos tambin pueden ser declarados como final. Es decir que mantendrn su valor y no sern modificados dentro del mtodo. ABSTRACT METHODS Son los mtodos que han sido declarados pero no implementados , es decir que no contienen cdigo funcional.

Es ilegal declarar un mtodo abstracto en una clase que no ha sido declarada implcitamente abstracta. Sin embargo se puede declarar una clase abstracta y no tener mtodos abstractos . Los mtodos abstractos terminan en ; La primera subclase (clase no abstracta) que herede a una clase abstracta debe implementar todos sus mtodos. Si es una clase abstracta, no hereda mtodos.

Los mtodos abstractos deben ser implementados por una nonabstract subclass Un mtodo nunca puede ser marcado como private and abstract or abstract y final Abstrac y static jams deben ser mezclados SYNCHRONIZED METHODS La palabra clave syncrhonized indica que un mtodo no puede ser accedido por ms de un hilo a la vez. El modificador syncrhornized puede ser aplicado slo a mtodos. Por otro lado puede ser mezclado con cualquier otro modificador de acceso. NATIVE METHODS Native es un modificador que slo se aplica a mtodos. Un mtodo declarado native, termina en ; determinando que la declaracin es omitida. STRICTFP METHODS Puede ser usado como modificador en clases y mtodos. Este modificador forza a puntos flotantes y est apegado a la norma ieee 754 Constructors declarations Todas las clases tienen un mtodo constructor, declarado implcitamente que el compilador construye por ti. Un mtodo constructor, jams jams jams tendr un tipo de retorno, jams. Los mtodos constructores pueden tener cualquier modificador y tener var-args como argumentos.

Cualquier mtodo constructor debe tener el mismo nombre de la clase en la que ha sido declarado. Los constructores no pueden ser static, final or abstract, porque no pueden ser overridden. INSTANCE VARIABLES Son las variables definidas dentro de las clases pero fuera de cualquier mtodo. Y son incializadas cuando la clase es instanciada. Pueden ser marcadas con cualquier modificador de acceso. Pueden ser transient y final No pueden ser abstract, synchronized, strictfp, native o static, porque se convertiran en variables de clase

LOCAL VARIABLES Son las variables declaradas dentro de un mtodo. La vida de las variables locales termina cuando el mtodo se concluye. Este tipo de variables, viven siempre en stack, no en the heap. Las variables locales slo pueden ser marcadas final. Antes de que una variable local sea usada, esta debe ser inicializada con un valor. A diferencia de las variables de instancia, las variables locales no tienen un valor de default. Una variable local, no puede ser referenciada fuera del mtodo en el que fue declarada. Es posible nombrar a una variable de instancia igual que a una variable local, esto es conocido como shadowing this Word

hace referencia al objeto actual (variable de instancia), cuando se utiliza this.size = size; se refiere a que el valor de la variable de instancia es igual al argumento del mtodo en el que se est escribiendo el cdigo.

ARRAY DECLARATIONS Los arreglos son objetos que almacenan variables del mismo tipo. Un arreglo siempre ser un objeto en la heap. Collection types: Java.util HashMap, ArrayList, ThreeSet. Ofrecen formas ms flexibles para acceder a un objeto. Para agregarlo, borrarlo y a diferencia de los arreglos, crecen y decrecen dinmicamente. Un arreglo se declara iniciando con el tipo u objeto segn lo que este vaya a almacenar, seguido de [] y luego el identificador Int [] num; //primitivos Thread [] thread; // objetos Tambin puede ponerse [] despus del identificador, pero es menos legible Int num[]; //primitivo Thread thread []; // objetos ARREGLOS MULTIDIMENCIONALES Son de hecho arreglos de arreglos. String [] [] [] occupantName ; // arreglo tridimensional (arreglo de arreglos de arreglos) String [] managerName[]; // arreglo bidimensional Nunca, nunca nunca se puede poner el tamao del arreglo en la declaracin, nunca. FINAL VARIABLES Si se declara una variable final, esta jams podr cambiar su valor, en cambio, si a un objeto se le asigna final, no significa que este no cambie su valor, es posible modificarlo, lo que no es posible cambiar es la referencia de este objeto. Osea, hay referencias finales, pero no objetos finales.

TRANSIENT VARIABLES VOLATILE STATIC DECLARING ENUMS Using enums can help me to reduce the bugs in the code Java restring a una variable a tener un solo valor de una lista de valores determinados, a los elementos de estas listas se les llama enums.

enum CoffeeSize {BIG, HUGE, OVERWHELMING}; la nica manera de obtener un tamao de caf ser CoffeeSize cs = CoffeSize.BIG; Los enum no deben ser declarados dentro de un mtodo Pueden ser miembros de una clase El orden en que los elementos de un enum son declarados, importa.

CHAPTER TWO ENCAPSULATION Variables de instancia protected, con modificador de acceso algunas veces private. Crear mtodos de acceso public , para que el cdigo se vea oblicado a usar esos mtodos en vez de acceder directamente a la variable. Los mtodos deben ser setters y getters

INHERITANCE IS-A HAS A Las dos principales razones para usar herencia en java son: IS-A Es como decir esta cosa es del tipo de esa cosa IS-A se expresa en java a travs de la keyword extends (para heredar de una clase) e implements (para implementar interfaces) HAS-A La relacin HAS-A est basada en uso, en vez de herencia. Pgina 124 Reutilizar cdigo Usar polimorfismo

Overloading methods Deben cambiar los argumentos del mtodo, el tipo de retorno, el modificador de acceso. Burn that in to your brain.

Heap & Stack Las variables de instancia y objetos viven en HEAP Las variables locales, viven en STACK