La construcción orientada a objetos principal en Java es la clase, que es una combinación de datos (campos), también conocidos como variables de instancia, y comportamiento (métodos). Los campos y métodos de una clase se conocen como sus miembros.
El acceso a los miembros se puede controlar mediante modificadores de acceso, siendo los dos más comunes:
public: se puede acceder al miembro desde cualquier código (sin restricciones).private: solo se puede acceder al miembro desde código en la misma clase.En Java, si no se especifica ningún modificador de acceso, el valor predeterminado es la visibilidad de paquete. En este caso, el miembro es visible para todas las clases definidas en el mismo paquete.
Esta agrupación de datos y comportamiento relacionados, junto con la restricción del acceso a los miembros, se conoce como encapsulación, que es uno de los conceptos centrales de la orientación a objetos.
Puedes pensar en una clase como una plantilla para crear instancias de esa clase.
Para crear una instancia de una clase (también conocida como objeto), se usa la palabra clave new:
class Car {
}
// Create two car instances
Car myCar = new Car();
Car yourCar = new Car();
Los campos tienen un tipo y un nombre (escrito con camelCase) y se pueden definir en cualquier parte de una clase (cuyo nombre va en PascalCase).
class Car {
// Accessible by anyone
public int weight;
// Only accessible by code in this class
private String color;
}
Opcionalmente, se puede asignar un valor inicial a un campo. Si un campo no especifica un valor inicial, se establecerá en el valor predeterminado de su tipo. Se puede acceder a los valores de los campos de una instancia y actualizarlos usando la notación de punto.
class Car {
// Will be set to specified value
public int weight = 2500;
// Will be set to default value (0)
public int year;
}
Car newCar = new Car();
newCar.weight; // => 2500
newCar.year; // => 0
// Update value of the field
newCar.year = 2018;
Los campos privados normalmente se actualizan como efecto secundario de llamar a un método.
Estos métodos normalmente no devuelven ningún valor, en cuyo caso el tipo de retorno debe ser void:
class CarImporter {
private int carsImported;
public void importCars(int numberOfCars)
{
// Update private field
carsImported = carsImported + numberOfCars;
}
}
Ten en cuenta que no es costumbre usar campos públicos en las clases de Java. Normalmente se usan campos privados, a los que se accede mediante getters y setters.
Dentro de una clase, la palabra clave this hará referencia a la clase actual.
Esto es especialmente útil si un parámetro tiene el mismo nombre que un campo:
class CarImporter {
private int carsImported;
public void setImportedCars(int carsImported)
{
// Update private field from public method
this.carsImported = carsImported;
}
}