Quién cuenta las entradas
Vendes entradas para un concierto. Cada entrada tiene su número: la 1, la 2, la 3.
Pero alguien tiene que saber cuántas llevas vendidas. Ese dato no es de una entrada. Es de todas a la vez.
Hoy aprendes a guardar datos que pertenecen a la clase y no a cada objeto.
Palabras clave
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| static | Marca algo que es de la clase entera y no de un objeto concreto. | static int created; |
| Atributo de clase | Un dato compartido: solo hay uno, aunque haya cien objetos. | Ticket.created |
| final | Un valor que se guarda una vez y no se puede cambiar más. | final double VAT |
| Constante | Un dato que nunca cambia. Se escribe en mayúsculas. | VAT |
| IVA | El impuesto que se suma al precio de lo que compras. | 21 por ciento |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Un dato de todos
Un atributo normal existe una vez en cada objeto. Cien entradas, cien números.
Si escribes static delante, el atributo existe una sola vez, en la clase. Todos los objetos lo comparten.
Para llegar a él usas el nombre de la clase y el punto: Ticket.created.
Pruébalo: contar las entradas
class Ticket {
static int created = 0;
int number;
Ticket() {
created = created + 1;
number = created;
}
}
public class Main {
public static void main(String[] args) {
Ticket first = new Ticket();
Ticket second = new Ticket();
Ticket third = new Ticket();
System.out.println("Número de la segunda: " + second.number);
System.out.println("Entradas creadas: " + Ticket.created);
// Crea una cuarta entrada y mira los dos números.
}
}
Ejemplo resuelto: el contador y los números
| Línea | Ticket.created | number de esa entrada |
|---|---|---|
| new Ticket() la primera | 1 | 1 |
| new Ticket() la segunda | 2 | 2 |
| new Ticket() la tercera | 3 | 3 |
| Después de las tres | 3 | cada una guarda el suyo |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Repaso rápido
Inténtalo
Repaso rápido
3 preguntasTus respuestas se corrigen aquí y no se guardan. Una cuenta guarda tus resultados.
Un valor que no cambia
El IVA de una compra es del 21 por ciento. Ese número no debe cambiar por error en medio del programa.
Con final lo guardas una vez y se queda así. Si alguien intenta cambiarlo, el programa no compila.
Una constante suele ser static final y se escribe en MAYÚSCULAS.
Pruébalo: el precio con IVA
class Shop {
static final double VAT = 0.21;
static double withVat(double price) {
return price + price * VAT;
}
}
public class Main {
public static void main(String[] args) {
// Un método static se llama con el nombre de la clase.
System.out.println(Shop.withVat(100));
System.out.println(Shop.withVat(50));
System.out.println("Máximo de 3 y 8: " + Math.max(3, 8));
// Prueba a escribir Shop.VAT = 0.10; y lee el error.
}
}
Ejemplo resuelto: precio más 21 por ciento
| Precio | El IVA es | Precio con IVA |
|---|---|---|
| 100 euros | 21 euros | 121 euros |
| 50 euros | 10,5 euros | 60,5 euros |
| 200 euros | 42 euros | 242 euros |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.