HOWTO · Java
¿Qué significa instanciar en Java
Este artículo enseña sobre el tema de la creación de instancias en Java.
En esta página
En Java, instanciar una clase significa crear uno de sus objetos; new lo crea y devuelve una referencia que puedes guardar y utilizar.
¿Qué significa instanciar una clase en Java?
Instanciar una clase en Java significa crear un objeto que sea una instancia de esa clase. Una clase define los campos y métodos que pueden tener sus objetos; cada objeto es una instancia concreta con sus propios valores para los campos. Una variable como car contiene una referencia a ese objeto, que puedes usar para acceder a sus campos y métodos.
Cómo new crea un objeto y un constructor lo inicializa
Este ejemplo crea un objeto Car, guarda su referencia en car y llama a uno de sus métodos:
public class Car {
private final String model;
private final String color;
Car(String model, String color) {
this.model = model;
this.color = color;
}
void display() {
System.out.println("Car model: " + model + ", Color: " + color);
}
public static void main(String[] args) {
Car car = new Car("Toyota", "Red");
car.display();
}
}
La expresión new Car("Toyota", "Red") crea una instancia de Car e invoca su constructor con dos argumentos. La expresión produce una referencia, que la asignación guarda en car. Un constructor tiene el mismo nombre que la clase y no declara un tipo de retorno; puede usar sus parámetros para establecer los campos del nuevo objeto. El programa muestra el modelo y el color a través de la referencia.
No es necesario escribir un constructor explícitamente en todas las clases. Java proporciona un constructor predeterminado sin argumentos solo cuando la clase no declara ningún constructor. Si declaras un constructor con parámetros, Java no añade también ese constructor predeterminado.
No se puede instanciar directamente una clase abstracta, porque puede dejar métodos para que los implementen sus subclases. En su lugar, puedes instanciar una subclase concreta que proporcione esas implementaciones.
Cómo los objetos mantienen su estado y usan métodos de instancia
Cada objeto tiene sus propios valores para los campos de instancia. Por ejemplo, dos objetos Car pueden tener modelos y colores distintos, aunque ambos usen el mismo método display() definido por Car. Los métodos de instancia operan sobre el objeto concreto al que se hace referencia cuando los llamas; en car.display(), el método lee los campos de ese coche. Crear otro objeto te da otro conjunto de valores de estado de instancia, sin cambiar los del primero.
Instanciación e inicialización en Java
Instanciar significa crear un objeto. Inicializar significa establecer su estado inicial. Son pasos relacionados, pero no son sinónimos: Java asigna a los campos de instancia sus valores predeterminados como parte de la creación del objeto; después, los inicializadores de campo y el constructor pueden establecer valores más útiles. Las asignaciones posteriores también pueden cambiar el estado del objeto.
En el ejemplo, new Car(...) es la expresión de instanciación, mientras que el constructor de Car asigna los valores iniciales de model y color. Un constructor es una forma de inicializar un objeto, pero eso no hace que «instanciación» e «inicialización» sean términos intercambiables.