La principal construcción orientada a objetos de 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 los métodos de una clase se conocen como sus miembros.
El acceso a los miembros puede controlarse mediante modificadores de acceso, de los cuales los dos más comunes son:
public: se puede acceder al miembro desde cualquier código (sin restricciones).private: solo se puede acceder al miembro desde el código de 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, uno de los conceptos fundamentales 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 utiliza 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 en camelCase) y pueden definirse en cualquier lugar de una clase (escrito 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 le asignará 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 suelen actualizarse como efecto secundario de llamar a un método.
Estos métodos normalmente no devuelven ningún valor, en cuyo caso el tipo devuelto 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 habitual 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 hace 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;
}
}