Constructores de Java
En Java, el constructor es un método especial que se utiliza para crear objetos de una clase.
Cuando se usa la palabra clave `new` para crear un objeto, el constructor se invoca automáticamente para inicializar los atributos del objeto.
Los constructores tienen las siguientes características:
Tienen el mismo nombre que la clase: el nombre del constructor debe ser exactamente igual al nombre de la clase, incluida la capitalización. Este es un requisito básico del constructor.
No tienen tipo de retorno: el constructor no declara un tipo de retorno; ni siquiera `void`
voidse escribe. Esto lo distingue de los métodos normales.Invocación automática: cada vez que se usa `new`
newpara crear un objeto, el constructor se invoca automáticamente para inicializar los atributos y el estado del objeto.No se puede invocar directamente: el constructor solo se puede invocar mediante la palabra clave `new`
newal crear un objeto; no se puede llamar directamente como un método normal.Admite sobrecarga: se pueden definir varios constructores para una clase, siempre que sus listas de parámetros sean diferentes. Mediante la sobrecarga se pueden crear distintos constructores para satisfacer diferentes necesidades de inicialización.
Constructor por defecto: si no se define ningún constructor, Java proporciona un constructor por defecto sin parámetros. Pero una vez definido cualquier otro constructor, Java ya no proporciona el constructor por defecto.
thisUso de la palabra clave: en el constructor se puede usar `this`thispara hacer referencia a los atributos y métodos del objeto actual, o invocar otro constructor (debe ser la primera línea del constructor), para evitar código duplicado.No se hereda, pero se puede invocar: el constructor no puede ser heredado por las subclases, pero estas pueden usar `super`
super()para invocar el constructor de la clase padre y así inicializar los atributos heredados.Garantía de inicialización del objeto: la función principal del constructor es inicializar los atributos y el estado del objeto, asegurando que el objeto se encuentre en un estado inicial válido al ser creado.
Funciones del constructor:
- Inicializar los atributos del objeto: la función principal del constructor es asignar valores iniciales a los atributos del objeto.
- Garantizar la integridad de la inicialización del objeto: en el constructor se pueden establecer valores por defecto o parámetros necesarios, evitando así que el objeto quede incompletamente inicializado.
Tipos de constructores
En Java, los constructores se dividen en dos tipos:Constructor sin parámetrosyConstructor con parámetros。
1. Constructor sin parámetros (constructor por defecto)
Si una clase no define ningún constructor, Java proporciona por defecto un constructor sin parámetros. Por ejemplo:
Ejemplo
public Person() {
System.out.println("Objeto Person creado");
}
}
- Cuando no se define explícitamente un constructor, Java proporciona automáticamente un constructor por defecto sin parámetros.
- Una vez definido otro constructor, Java ya no proporcionará el constructor por defecto.
2. Constructor con parámetros
Se pueden definir constructores con parámetros para asignar valores a los atributos al crear el objeto:
Ejemplo
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
Al invocar un constructor con parámetros, se pueden inicializar los atributos del objeto:
Person p = new Person("Alice", 25);Sobrecarga de constructores
Java admite la sobrecarga de constructores, es decir, se pueden definir varios constructores en la misma clase siempre que sus listas de parámetros sean diferentes. Por ejemplo:
Ejemplo
String name;
int age;
public Person() {
this.name = "Unknown";
this.age = 0;
}
public Person(String name) {
this.name = name;
this.age = 0;
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
Al crear un objeto, Java selecciona automáticamente el constructor que coincide según el número y tipo de parámetros pasados:
Person p1 = new Person(); // 调用无参构造方法
Person p2 = new Person("Alice"); // 调用单参数构造方法
Person p3 = new Person("Bob", 30); // 调用双参数构造方法La palabra clave `this` en los constructores
En un constructor, la palabra clave `this` se usa normalmente en dos situaciones:
1. Hacer referencia a los atributos o métodos del objeto actual:Cuando el nombre del parámetro del constructor es igual al nombre del atributo de la clase, se usa `this` para distinguir el atributo de la clase del parámetro. Por ejemplo:
Ejemplo
this.name = name; // `this.name` se refiere al atributo de la clase
this.age = age;
}
2. Invocar otro constructor:Se puede usar `this()` para invocar otro constructor de la clase actual; se usa a menudo para evitar código duplicado, pero debe estar en la primera línea del constructor.
Ejemplo
this(name, 0); // invoca a otro constructor con dos parámetros
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
El constructor es una parte muy importante de la programación orientada a objetos en Java. Mediante su uso se puede controlar eficazmente el proceso de inicialización de los objetos, garantizando la integridad y la consistencia del estado de los objetos creados.
Otras extensiones