SlideShare una empresa de Scribd logo
VARIABLES Y METODOS DE INSTANCIA
Una clase en Java puede contener variables y métodos. Las variables pueden ser
tipos primitivos como int, char, etc. Los métodos son funciones.
Por ejemplo, en el siguiente trozo de código podemos observarlo:
public MiClase {
int i;
public MiClase() {
i = 10;
}
public void Suma_a_i( int j ) {
i = i + j;
}
}
La clase MiClase contiene una variable (i) y dos métodos, MiClase que es el
constructor de la clase y Suma_a_i( int j ).
Ambito de una variable
Los bloques de sentencias compuestas en Java se delimitan con dos llaves. Las
variables de Java sólo son válidas desde el punto donde están declaradas hasta el
final de la sentencia compuesta que la engloba. Se pueden anidar estas sentencias
compuestas, y cada una puede contener su propio conjunto de declaraciones de
variables locales. Sin embargo, no se puede declarar una variable con el mismo
nombre que una de ámbito exterior.
El siguiente ejemplo intenta declarar dos variables separadas con el mismo
nombre. En C y C++ son distintas, porque están declaradas dentro de ámbitos
diferentes. En Java, esto es ilegal.
Class Ambito {
int i = 1; // ámbito exterior
{ // crea un nuevo ámbito
int i = 2; // error de compilación
}
}
Métodos y Constructores
Los métodos son funciones que pueden ser llamadas dentro de la clase o por otras
clases. El constructor es un tipo específico de método que siempre tiene el mismo
nombre que la clase.
Cuando se declara una clase en Java, se pueden declarar uno o más constructores
opcionales que realizan la inicialización cuando se instancia (se crea una
ocurrencia) un objeto de dicha clase.
Utilizando el código de ejemplo anterior, cuando se crea una nueva instancia de
MiClase, se crean (instancian) todos los métodos y variables, y se llama al
constructor de la clase:
MiClase mc;
mc = new MiClase();
La palabra clave new se usa para crear una instancia de la clase. Antes de ser
instanciada con new no consume memoria, simplemente es una declaración de
tipo. Después de ser instanciado un nuevo objeto mc, el valor dei en el
objeto mc será igual a 10. Se puede referenciar la variable (de instancia) i con el
nombre del objeto:
mc.i++; // incrementa la instancia de i de mc
Al tener mc todas las variables y métodos de MiClase, se puede usar la primera
sintaxis para llamar al método Suma_a_i() utilizando el nuevo nombre de
clase mc:
mc.Suma_a_i( 10 );
y ahora la variable mc.i vale 21.
Finalizadores
Java no utiliza destructores (al contrario que C++) ya que tiene una forma de
recoger automáticamente todos los objetos que se salen del alcance. No obstante
proporciona un método que, cuando se especifique en el código de la clase, el
reciclador de memoria (garbage collector) llamará:
// Cierra el canal cuando este objeto es reciclado
protected void finalize() {
close();
}
En esta sección, discutimos el uso de la palabra clave static para crears campos
ys métodos que pertenecen a la clase, en lugar de a una instancia de la clase.
Variables de Clase
Cuando un número de objetos se crean del mismo esquema de la clase, cada
uno tiene sus propias copias distintas de variables de instancia. En el caso de la
claseBicycle, las variables de instancia son cadence, gear, y speed. Cada
objeto Bicycle tiene sus propios valores para estas variables, almacenados en
diversas posiciones de memoria.
A veces, deseas tener variables que sean comunes a todos los objetos. Esto se
logra con el modificador static. Los campos que tienen el modificador static en
su declaración se llaman campos estáticos o variables de la clase. Estas están
asociadas con la clase, en lugar de a cualquier objeto. Cada instancia de la clase
comparte una variable de clase, que está en una localización fija en memoria.
Cualquier objeto puede cambiar el valor de una variable de clase, pero las
variables de clase pueden también ser manipuladas sin crear una instancia de la
clase.
Por ejemplo, suponga que desea crear un número de objetos Bicycle y asignar a
cada uno un número de serie, comenzando con 1 para el primer objeto. Este
número de identificación es único a cada objeto y es por lo tanto una variable de
instancia. Al mismo tiempo, necesita un campo para llevar la cuanta de cuántos
objetos Bicycle se han creado de modo que sepas qué ID asignar al siguiente.
Este campo no se relaciona con ningún objeto individual, sino con la clase en
como un todo. Para esto necesita una variable de clase, numberOfBicycles, como
sigue:
public class Bicycle{
private int cadence;
private int gear;
private int speed;
// agregar una variable de instancia para el ID de objeto
private int id;
// agregar una variable de clase para el número de objetos Bicycle
instanciados
private static int numberOfBicycles = 0;
......
}
Las variables de clase se referencian por el nombre de clase en sí mismo, como
en
Bicycle.numberOfBicycles
Esto hace claro que son variables de clase.
Nota: Puede también referirse a campos estáticos con una referencia de objeto
como
myBike.numberOfBicycles
pero esto no se recomienda porque no hace claro que estas son variables de
clase.
Puede usar el constructor de Bicycle para establecer la variable de instancia id e
incrementar la variable de clase numberOfBicycles:
public class Bicycle{
private int cadence;
private int gear;
private int speed;
private int id;
private static int numberOfBicycles = 0;
public Bicycle(int startCadence, int startSpeed, int startGear){
gear = startGear;
cadence = startCadence;
speed = startSpeed;
// incrementar el número de bicicletas y asignar un número de ID
id = ++numberOfBicycles;
}
// nuevo método para regresar la variable de instancia ID
public int getID() {
return id;
}
.....
}
Métodos de Clase
El lenguaje de programación Java soporta métodos estáticos así como variables
estáticas. Los métodos estáticos, que tienen el modificador static en sus
declaraciones, se deben invocar con el nombre de la clase, sin la necesidad de
crear una instancia de la clase, como en
ClassName.methodName(args)
Nota: Puede también referirse a métodos estáticos con una referencia de
objeto como
instanceName.methodName(args)
pero no se recomienda porque no hace claro que estas son variables de clase.
Un uso común para los métodos estáticos es el acceder a campos estáticos. Por
ejemplo, podríamos agregar un método estático a la clase Bicycle para acceder el
campo estático numberOfBicycles:
public static int getNumberOfBicycles() {
return numberOfBicycles;
}
No todas las combinaciones de variables de instancia y de clase se permiten:
 Los métodos de instancia pueden acceder variables de la instancia y a
métodos de la instancia directamente.
 Los métodos de instancia pueden acceder variables de la clase y a
métodos de la clase directamente.
 Los métodos de la clase pueden acceder variables de la clase y a métodos
de la clase directamente.
 Los métodos de la clase no pueden acceder variables de la instancia o a
métodos de la instancia directamente—estos deben utilizar una
referencia de objeto. También, los métodos de la clase no pueden utilizar
la palabra clave this ya que no hay instancia de this a la cual referirse.
Constantes
El modificador static, junto con el modificador final, también se utiliza para
definir constantes. El modificador final indica que el valor de este campo no
puede cambiar.
Por ejemplo, la siguiente declaración de variable define una constante
llamada PI, cuyo valor es una aproximación de pi (el cociente de la
circunferencia de un círculo a su diámetro):
static final double PI = 3.141592653589793;
Las constantes definidas de esta manera no pueden ser reasignadas, y es un
error de tiempo de compilación si su programa intenta hacerlo. Por convención,
el nombre de valores constantes se deletreado en letras mayúsculas. Si el
nombre se compone de más de una palabra, las palabras se separan por un
guión bajo (_).
Nota: Si se define un tipo primitivo o una cadena como una constante y el valor
es conocido en tiempo de compilación, el compilador substituye el nombre de la
constante en todas partes en el código con su valor. Esta se llama constante de
tiempo de compilación. Si el valor de la constante cambia en el mundo exterior
(por ejemplo, si se legisla que el pi realmente debe ser 3.975), necesitará
recompilar cualquier clase que utilice esta constante para obtener el valor
actual.
La Clase Bicycle
Después de todas las modificaciones hechas en esta sección, la clase Bicycle es
ahora:
public class Bicycle{
private int cadence;
private int gear;
private int speed;
private int id;
private static int numberOfBicycles = 0;
public Bicycle(int startCadence, int startSpeed, int startGear){
gear = startGear;
cadence = startCadence;
speed = startSpeed;
id = ++numberOfBicycles;
}
public int getID() { //obtener ID
return id;
}
public static int getNumberOfBicycles() { //obtener número de
bicicletas
return numberOfBicycles;
}
public int getCadence(){ //obtener cadencia
return cadence;
}
public void setCadence(int newValue){ //establecer cadencia
cadence = newValue;
}
public int getGear(){ //obtener engrane
return gear;
}
public void setGear(int newValue){ //establecer engrane
gear = newValue;
}
public int getspeed(){ //obtener velocidad
return speed;
}
public void applyBrake(int decrement){ //aplicar frenos
speed -= decrement;
}
public void speedUp(int increment){ //acelerar
speed += increment;
}
}

Más contenido relacionado

DOCX
ECUACIONES DIFERENCIALES PARCIALES
 
PDF
Ejercicios de evaluación de fundametnos de programacion en JAva
PDF
EJERCICIOS RESUELTOS SOBRE EL MÉTODO DE NEWTON Y EL MÉTODO DE LA SECANTE
DOCX
Colisión elástica
PDF
Arreglos Bidimensionales - Java - NetBeans
PPSX
Ecuaciones Diferenciales de Primer Orden.
PPTX
Trabajo realizado por la Fuerza que ejerce un resorte
DOCX
G5 oscilaciones
ECUACIONES DIFERENCIALES PARCIALES
 
Ejercicios de evaluación de fundametnos de programacion en JAva
EJERCICIOS RESUELTOS SOBRE EL MÉTODO DE NEWTON Y EL MÉTODO DE LA SECANTE
Colisión elástica
Arreglos Bidimensionales - Java - NetBeans
Ecuaciones Diferenciales de Primer Orden.
Trabajo realizado por la Fuerza que ejerce un resorte
G5 oscilaciones

La actualidad más candente (20)

DOCX
Ejercicio de Dinámica (Trabajo y Energía)
PDF
Ecuaciones diferenciales lineales de primer orden y aplicaciones(tema 1)
DOCX
Ecuaciones Diferenciales
PDF
Ejercicios resueltos de c++
DOCX
Maximos y minimos funcion de varias variables
PDF
Persistencia de datos en Java
PPTX
Vectores tangente unitario y normal unitario
PDF
Distribucion exponencial
PPTX
Ecuaciones diferenciales de orden superior
PDF
Sesión5 mecánica
PPTX
Sistema masa resorte
PDF
Mod 2 algoritmos
DOC
Distribuciones de probabilidad con ejemplos
PPTX
Introducción a los Procesos Estocásticos y sus Aplicaciones en la Actuaría
PDF
Programación Orientada a Eventos Java
PPSX
Ecuación del Movimiento Amortiguado.
PPTX
Programación 3: algoritmo de Prim y de Kruskal
PDF
Metodos numericos con matlab
PPT
Pruebas de Uniformidad
PPTX
Flujos y archivo en java
Ejercicio de Dinámica (Trabajo y Energía)
Ecuaciones diferenciales lineales de primer orden y aplicaciones(tema 1)
Ecuaciones Diferenciales
Ejercicios resueltos de c++
Maximos y minimos funcion de varias variables
Persistencia de datos en Java
Vectores tangente unitario y normal unitario
Distribucion exponencial
Ecuaciones diferenciales de orden superior
Sesión5 mecánica
Sistema masa resorte
Mod 2 algoritmos
Distribuciones de probabilidad con ejemplos
Introducción a los Procesos Estocásticos y sus Aplicaciones en la Actuaría
Programación Orientada a Eventos Java
Ecuación del Movimiento Amortiguado.
Programación 3: algoritmo de Prim y de Kruskal
Metodos numericos con matlab
Pruebas de Uniformidad
Flujos y archivo en java
Publicidad

Destacado (18)

PPT
2 1 1 Definiendo Clases
 
PDF
Librería String, Math de Java (NetBeans)
PPT
Tm04 modelo de clases
PPT
PDF
Paradigma orientado a objetos
PDF
Introducción a la programación orientada objetos
PPTX
MéTodos En Java
PDF
Introducción a la programación y la informática. Tema 6
PDF
Programación Orientada a Objetos en Java - Parte I 2015
PPT
Ecuaciones Cuadraticas
PPTX
METODOS
PPT
Introducción a Programación Orientada a Objetos (OOP): Clases y Objetos
PPT
PPTX
Java
PPTX
Clase math.java
PDF
Como programar java, 9na edicion deitel
PDF
Java orientado a objetos
2 1 1 Definiendo Clases
 
Librería String, Math de Java (NetBeans)
Tm04 modelo de clases
Paradigma orientado a objetos
Introducción a la programación orientada objetos
MéTodos En Java
Introducción a la programación y la informática. Tema 6
Programación Orientada a Objetos en Java - Parte I 2015
Ecuaciones Cuadraticas
METODOS
Introducción a Programación Orientada a Objetos (OOP): Clases y Objetos
Java
Clase math.java
Como programar java, 9na edicion deitel
Java orientado a objetos
Publicidad

Similar a Variables y metodos de instancia (20)

DOCX
Datos Previos
DOCX
Datos Previos
DOCX
Datos previos
PPTX
Clases en Java y todo lo relacionado
PPTX
DAW - Desarrollo de clases
PDF
Unidad 2 clases y objetos
DOCX
Elementos de una clase
PDF
Unidad 3 CLASES, OBJETOS E INTSANCIAS
PPT
Unidad o informatica
PDF
Uso de Clases en Java, manual practico de 48 paginas
PDF
Unidad 2 poo_clases_y_objetos
PPT
Curso Java - Programación Digital
PDF
PPTX
Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOS
PPT
Conceptos de programacion orientada a objetos
PDF
Apunte paradigma orientado a objetos
PPT
Semana9b Vbr
PDF
Proyecto en android completado
DOCX
Miembros estáticos
PPT
Intro Java
Datos Previos
Datos Previos
Datos previos
Clases en Java y todo lo relacionado
DAW - Desarrollo de clases
Unidad 2 clases y objetos
Elementos de una clase
Unidad 3 CLASES, OBJETOS E INTSANCIAS
Unidad o informatica
Uso de Clases en Java, manual practico de 48 paginas
Unidad 2 poo_clases_y_objetos
Curso Java - Programación Digital
Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOS
Conceptos de programacion orientada a objetos
Apunte paradigma orientado a objetos
Semana9b Vbr
Proyecto en android completado
Miembros estáticos
Intro Java

Más de Robert Wolf (20)

PDF
Tema6resumido
PDF
Tema4 herencia
PDF
Tema 6
PDF
Tema 16 acceso a base de datos usando jpa por gio
PDF
Tema 15 aplicaciones de dos capas por gio
PDF
Tema 14 imágenes en java por gio
PDF
Tema 13 gráficas en java por gio
PDF
Tema 12 hilos en java por gio
PDF
Tema 11 expresiones regulares en java por gio
PDF
Tema 10 clase abstractas e interfaz
PDF
Tema 10 entrada y salida por gio
PDF
Tema 9 pruebas unitarias por gio
PDF
Tema 9 aplicaciones de dos capas por gio
PDF
Tema 8 entrada y salida por gio
PDF
Tema 8 desarrollo de aplicaciones en java por gio
PDF
Tema 7 gui, swing y java beans por gio
PDF
Tema 7 desarrollo de aplicaciones en java - lsia por gio
PDF
Tema 6 gui, swing y java beans por gio
PDF
Tema 6 colecciones por gio
PDF
Tema 5 arreglos y cadenas por gio
Tema6resumido
Tema4 herencia
Tema 6
Tema 16 acceso a base de datos usando jpa por gio
Tema 15 aplicaciones de dos capas por gio
Tema 14 imágenes en java por gio
Tema 13 gráficas en java por gio
Tema 12 hilos en java por gio
Tema 11 expresiones regulares en java por gio
Tema 10 clase abstractas e interfaz
Tema 10 entrada y salida por gio
Tema 9 pruebas unitarias por gio
Tema 9 aplicaciones de dos capas por gio
Tema 8 entrada y salida por gio
Tema 8 desarrollo de aplicaciones en java por gio
Tema 7 gui, swing y java beans por gio
Tema 7 desarrollo de aplicaciones en java - lsia por gio
Tema 6 gui, swing y java beans por gio
Tema 6 colecciones por gio
Tema 5 arreglos y cadenas por gio

Último (20)

PDF
Escuela de Negocios - Robert kiyosaki Ccesa007.pdf
DOCX
V UNIDAD - SEGUNDO GRADO. del mes de agosto
PDF
biología es un libro sobre casi todo el tema de biología
PDF
SESION 12 INMUNIZACIONES - CADENA DE FRÍO- SALUD FAMILIAR - PUEBLOS INDIGENAS...
PDF
DI, TEA, TDAH.pdf guía se secuencias didacticas
PDF
ACERTIJO Súper Círculo y la clave contra el Malvado Señor de las Formas. Por ...
PDF
Educación Artística y Desarrollo Humano - Howard Gardner Ccesa007.pdf
PDF
Tomo 1 de biologia gratis ultra plusenmas
DOCX
UNIDAD DE APRENDIZAJE 5 AGOSTO tradiciones
PDF
Salvese Quien Pueda - Andres Oppenheimer Ccesa007.pdf
PDF
Punto Critico - Brian Tracy Ccesa007.pdf
PDF
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
PDF
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
PDF
Gasista de unidades unifuncionales - pagina 23 en adelante.pdf
PDF
Escuela Sabática 6. A través del Mar Rojo.pdf
PPTX
caso clínico iam clinica y semiología l3.pptx
PDF
OK OK UNIDAD DE APRENDIZAJE 5TO Y 6TO CORRESPONDIENTE AL MES DE AGOSTO 2025.pdf
PDF
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
PDF
TRAUMA_Y_RECUPERACION consecuencias de la violencia JUDITH HERMAN
PDF
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
Escuela de Negocios - Robert kiyosaki Ccesa007.pdf
V UNIDAD - SEGUNDO GRADO. del mes de agosto
biología es un libro sobre casi todo el tema de biología
SESION 12 INMUNIZACIONES - CADENA DE FRÍO- SALUD FAMILIAR - PUEBLOS INDIGENAS...
DI, TEA, TDAH.pdf guía se secuencias didacticas
ACERTIJO Súper Círculo y la clave contra el Malvado Señor de las Formas. Por ...
Educación Artística y Desarrollo Humano - Howard Gardner Ccesa007.pdf
Tomo 1 de biologia gratis ultra plusenmas
UNIDAD DE APRENDIZAJE 5 AGOSTO tradiciones
Salvese Quien Pueda - Andres Oppenheimer Ccesa007.pdf
Punto Critico - Brian Tracy Ccesa007.pdf
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
Gasista de unidades unifuncionales - pagina 23 en adelante.pdf
Escuela Sabática 6. A través del Mar Rojo.pdf
caso clínico iam clinica y semiología l3.pptx
OK OK UNIDAD DE APRENDIZAJE 5TO Y 6TO CORRESPONDIENTE AL MES DE AGOSTO 2025.pdf
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
TRAUMA_Y_RECUPERACION consecuencias de la violencia JUDITH HERMAN
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf

Variables y metodos de instancia

  • 1. VARIABLES Y METODOS DE INSTANCIA Una clase en Java puede contener variables y métodos. Las variables pueden ser tipos primitivos como int, char, etc. Los métodos son funciones. Por ejemplo, en el siguiente trozo de código podemos observarlo: public MiClase { int i; public MiClase() { i = 10; } public void Suma_a_i( int j ) { i = i + j; } } La clase MiClase contiene una variable (i) y dos métodos, MiClase que es el constructor de la clase y Suma_a_i( int j ). Ambito de una variable Los bloques de sentencias compuestas en Java se delimitan con dos llaves. Las variables de Java sólo son válidas desde el punto donde están declaradas hasta el final de la sentencia compuesta que la engloba. Se pueden anidar estas sentencias compuestas, y cada una puede contener su propio conjunto de declaraciones de variables locales. Sin embargo, no se puede declarar una variable con el mismo nombre que una de ámbito exterior. El siguiente ejemplo intenta declarar dos variables separadas con el mismo nombre. En C y C++ son distintas, porque están declaradas dentro de ámbitos diferentes. En Java, esto es ilegal. Class Ambito { int i = 1; // ámbito exterior { // crea un nuevo ámbito int i = 2; // error de compilación } } Métodos y Constructores Los métodos son funciones que pueden ser llamadas dentro de la clase o por otras clases. El constructor es un tipo específico de método que siempre tiene el mismo nombre que la clase.
  • 2. Cuando se declara una clase en Java, se pueden declarar uno o más constructores opcionales que realizan la inicialización cuando se instancia (se crea una ocurrencia) un objeto de dicha clase. Utilizando el código de ejemplo anterior, cuando se crea una nueva instancia de MiClase, se crean (instancian) todos los métodos y variables, y se llama al constructor de la clase: MiClase mc; mc = new MiClase(); La palabra clave new se usa para crear una instancia de la clase. Antes de ser instanciada con new no consume memoria, simplemente es una declaración de tipo. Después de ser instanciado un nuevo objeto mc, el valor dei en el objeto mc será igual a 10. Se puede referenciar la variable (de instancia) i con el nombre del objeto: mc.i++; // incrementa la instancia de i de mc Al tener mc todas las variables y métodos de MiClase, se puede usar la primera sintaxis para llamar al método Suma_a_i() utilizando el nuevo nombre de clase mc: mc.Suma_a_i( 10 ); y ahora la variable mc.i vale 21. Finalizadores Java no utiliza destructores (al contrario que C++) ya que tiene una forma de recoger automáticamente todos los objetos que se salen del alcance. No obstante proporciona un método que, cuando se especifique en el código de la clase, el reciclador de memoria (garbage collector) llamará: // Cierra el canal cuando este objeto es reciclado protected void finalize() { close(); } En esta sección, discutimos el uso de la palabra clave static para crears campos ys métodos que pertenecen a la clase, en lugar de a una instancia de la clase. Variables de Clase
  • 3. Cuando un número de objetos se crean del mismo esquema de la clase, cada uno tiene sus propias copias distintas de variables de instancia. En el caso de la claseBicycle, las variables de instancia son cadence, gear, y speed. Cada objeto Bicycle tiene sus propios valores para estas variables, almacenados en diversas posiciones de memoria. A veces, deseas tener variables que sean comunes a todos los objetos. Esto se logra con el modificador static. Los campos que tienen el modificador static en su declaración se llaman campos estáticos o variables de la clase. Estas están asociadas con la clase, en lugar de a cualquier objeto. Cada instancia de la clase comparte una variable de clase, que está en una localización fija en memoria. Cualquier objeto puede cambiar el valor de una variable de clase, pero las variables de clase pueden también ser manipuladas sin crear una instancia de la clase. Por ejemplo, suponga que desea crear un número de objetos Bicycle y asignar a cada uno un número de serie, comenzando con 1 para el primer objeto. Este número de identificación es único a cada objeto y es por lo tanto una variable de instancia. Al mismo tiempo, necesita un campo para llevar la cuanta de cuántos objetos Bicycle se han creado de modo que sepas qué ID asignar al siguiente. Este campo no se relaciona con ningún objeto individual, sino con la clase en como un todo. Para esto necesita una variable de clase, numberOfBicycles, como sigue: public class Bicycle{ private int cadence; private int gear; private int speed; // agregar una variable de instancia para el ID de objeto private int id; // agregar una variable de clase para el número de objetos Bicycle instanciados private static int numberOfBicycles = 0; ...... } Las variables de clase se referencian por el nombre de clase en sí mismo, como en Bicycle.numberOfBicycles Esto hace claro que son variables de clase.
  • 4. Nota: Puede también referirse a campos estáticos con una referencia de objeto como myBike.numberOfBicycles pero esto no se recomienda porque no hace claro que estas son variables de clase. Puede usar el constructor de Bicycle para establecer la variable de instancia id e incrementar la variable de clase numberOfBicycles: public class Bicycle{ private int cadence; private int gear; private int speed; private int id; private static int numberOfBicycles = 0; public Bicycle(int startCadence, int startSpeed, int startGear){ gear = startGear; cadence = startCadence; speed = startSpeed; // incrementar el número de bicicletas y asignar un número de ID id = ++numberOfBicycles; } // nuevo método para regresar la variable de instancia ID public int getID() { return id; } ..... } Métodos de Clase El lenguaje de programación Java soporta métodos estáticos así como variables estáticas. Los métodos estáticos, que tienen el modificador static en sus declaraciones, se deben invocar con el nombre de la clase, sin la necesidad de crear una instancia de la clase, como en ClassName.methodName(args)
  • 5. Nota: Puede también referirse a métodos estáticos con una referencia de objeto como instanceName.methodName(args) pero no se recomienda porque no hace claro que estas son variables de clase. Un uso común para los métodos estáticos es el acceder a campos estáticos. Por ejemplo, podríamos agregar un método estático a la clase Bicycle para acceder el campo estático numberOfBicycles: public static int getNumberOfBicycles() { return numberOfBicycles; } No todas las combinaciones de variables de instancia y de clase se permiten:  Los métodos de instancia pueden acceder variables de la instancia y a métodos de la instancia directamente.  Los métodos de instancia pueden acceder variables de la clase y a métodos de la clase directamente.  Los métodos de la clase pueden acceder variables de la clase y a métodos de la clase directamente.  Los métodos de la clase no pueden acceder variables de la instancia o a métodos de la instancia directamente—estos deben utilizar una referencia de objeto. También, los métodos de la clase no pueden utilizar la palabra clave this ya que no hay instancia de this a la cual referirse. Constantes El modificador static, junto con el modificador final, también se utiliza para definir constantes. El modificador final indica que el valor de este campo no puede cambiar. Por ejemplo, la siguiente declaración de variable define una constante llamada PI, cuyo valor es una aproximación de pi (el cociente de la circunferencia de un círculo a su diámetro): static final double PI = 3.141592653589793; Las constantes definidas de esta manera no pueden ser reasignadas, y es un error de tiempo de compilación si su programa intenta hacerlo. Por convención,
  • 6. el nombre de valores constantes se deletreado en letras mayúsculas. Si el nombre se compone de más de una palabra, las palabras se separan por un guión bajo (_). Nota: Si se define un tipo primitivo o una cadena como una constante y el valor es conocido en tiempo de compilación, el compilador substituye el nombre de la constante en todas partes en el código con su valor. Esta se llama constante de tiempo de compilación. Si el valor de la constante cambia en el mundo exterior (por ejemplo, si se legisla que el pi realmente debe ser 3.975), necesitará recompilar cualquier clase que utilice esta constante para obtener el valor actual. La Clase Bicycle Después de todas las modificaciones hechas en esta sección, la clase Bicycle es ahora: public class Bicycle{ private int cadence; private int gear; private int speed; private int id; private static int numberOfBicycles = 0; public Bicycle(int startCadence, int startSpeed, int startGear){ gear = startGear; cadence = startCadence; speed = startSpeed; id = ++numberOfBicycles; } public int getID() { //obtener ID return id; } public static int getNumberOfBicycles() { //obtener número de bicicletas return numberOfBicycles;
  • 7. } public int getCadence(){ //obtener cadencia return cadence; } public void setCadence(int newValue){ //establecer cadencia cadence = newValue; } public int getGear(){ //obtener engrane return gear; } public void setGear(int newValue){ //establecer engrane gear = newValue; } public int getspeed(){ //obtener velocidad return speed; } public void applyBrake(int decrement){ //aplicar frenos speed -= decrement; } public void speedUp(int increment){ //acelerar speed += increment; } }