Crear una nueva clase en Java
En este tutorial voy a enseñarles cómo crear una nueva clase en Java. Al igual que en la primera parte de la serie, estoy usando IntelliJ como mi IDE (editor de código). Si prefieren usar otro editor, está perfecto: no importa cuál uses, porque los conceptos son exactamente los mismos.
La idea es que tenemos un proyecto nuevo y, dentro de ese proyecto, vamos a agregar una clase llamada CajaTexto, que representará una caja de texto como las que ves en formularios o aplicaciones.
Cada clase en su propio archivo
En Java, normalmente agregamos cada clase en un archivo separado. Esto no es un capricho: nos ayuda a mantener el código organizado, limpio y fácil de navegar cuando el proyecto crece.
Entonces, abrimos el panel de proyectos y expandimos la carpeta de fuentes (sources). Dentro de ese paquete principal tenemos, por ahora, una sola clase: la clase principal.
Ahora hacemos clic derecho en el paquete y elegimos crear una nueva clase Java. A esta clase la vamos a llamar CajaTexto.
Convención de nombres: PascalCase
Mira la convención de nombres: CajaTexto.
Esto sigue PascalCase, que significa que la primera letra de cada palabra va en mayúscula. Es la convención típica para nombres de clases en Java.
Una vez creada la clase, tendremos algo así:
public class CajaTexto {
public String texto; // field
public void setText(String texto){
this.texto = texto;
}
public void clear() {
texto = "";
}
}Todavía no te preocupes por entender cada palabra. Vamos paso a paso.
El modificador public
Al inicio ves la palabra public. Esto es un modificador de acceso, y sirve para definir si otras clases pueden usar o no esta clase.
En este curso lo vamos a usar por ahora porque es lo más directo: public significa que la clase es visible para las demás clases del proyecto.
Más adelante veremos otros modificadores como private y protected, y por qué son importantes.
Miembros de una clase: fields y métodos
Dentro de las llaves { } agregamos los miembros de la clase. En este ejemplo tenemos tres:
- Un field (campo) para guardar información.
- Un método para establecer el texto.
- Un método para limpiar el texto.
El field: guardando el texto
El primer miembro es:
public String texto;Este es un field, que es una variable definida dentro de una clase. Aquí vamos a guardar el texto que el usuario haya escrito en la caja.
Observa que el nombre del field es texto (en minúscula). Esto sigue una convención distinta: camelCase, donde la primera palabra empieza en minúscula y las siguientes palabras (si existieran) tendrían mayúscula.
En este caso es una sola palabra, por eso va completamente en minúscula.
Método setText: asignar un valor al campo
Ahora vamos con el método:
public void setText(String texto){
this.texto = texto;
}Vamos por partes.
public: visible desde otras clases (por ahora lo dejamos así).void: significa que este método no retorna nada.setText: nombre del método.(String texto): parámetro del método; es el valor que queremos asignar.
La línea importante es esta:
this.texto = texto;Aquí estamos diciendo: “el texto del objeto actual” se va a igualar al parámetro texto recibido.
¿Por qué no funciona texto = texto?
Es muy común que al inicio uno lo escriba así:
public void setText(String texto){
texto = texto;
}Pero esto no hace nada útil, porque Java interpreta que ambos texto son el parámetro, no el field. Es decir, estás asignando el parámetro… al mismo parámetro.
Por eso usamos this.
El keyword this
this es una referencia al objeto actual.
Piensa en esto: cuando más adelante creemos un objeto caja1, dentro de ese objeto habrá un texto. Entonces, this.texto significa: “el texto que pertenece a este objeto en particular”.
Además, cuando escribes this. en el editor, aparecen muchos miembros como equals, hashCode, toString, etc. Aunque tú no los hayas definido.
Eso ocurre porque en Java existe un mecanismo llamado herencia (inheritance): muchas clases heredan métodos de una clase base. Lo veremos con calma en la siguiente sección.
Método clear: borrar el texto
El segundo método es:
public void clear() {
texto = "";
}Este método no recibe parámetros, y su función es dejar el texto vacío.
Aquí no necesitamos usar this, porque no hay confusión con un parámetro llamado texto. Al escribir texto, Java entiende que nos referimos al field de la clase.
Un detalle importante sobre public en fields
Técnicamente, en Java no deberíamos declarar fields como public en proyectos reales. Lo usual es que sean private y que accedamos a ellos mediante métodos.
Pero aquí lo dejamos así por una razón: quiero que lo aprendas paso a paso, sin meter todo al tiempo. En las próximas lecciones lo vamos a corregir de forma elegante y profesional.
Cierre
Y listo: ya creamos una clase nueva con tres miembros (un field y dos métodos). En la siguiente lección vamos a dar el siguiente paso natural: crear instancias de esta clase, es decir, construir objetos reales como caja1, caja2, etc., y ver cómo cada objeto puede tener su propio estado.