Propiedades y métodos estáticos

package com.trifulcas.herencia.estatico;

public class Cliente {
	private String nombre;
	public static double iva=.21;
	public Cliente(String nombre) {
		super();
		this.nombre = nombre;
	}
	/**
	 * @return the nombre
	 */
	public String getNombre() {
		return nombre;
	}
	/**
	 * @param nombre the nombre to set
	 */
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	@Override
	public String toString() {
		return "Cliente [nombre=" + nombre + ", iva=" + iva + "]";
	}
	// Método estático compartido por todas las instancias
	// Igual que la propiedad
	public static void saludo() {
		// Yo desde un método estático no puedo acceder
		// a propiedades no estáticas
		// Error: System.out.println(nombre);
		System.out.println("Hola que tal");
		// A las propiedades estáticas, sí
		System.out.println(iva);
	}
	
}

package com.trifulcas.herencia.estatico;

public class Utils {
	public static String saludo(String nombre) {
		return nombre;
	}
	public static boolean esPrimo(int numero) {
		for(int i=2;i<numero;i++) {
			if (numero %i==0) {
				return false;
			}
		}
		return true;
	}
}
Cliente ana = new Cliente("Ana");
		Cliente eva = new Cliente("Eva");
		Cliente pep = new Cliente("Pep");
		// Yo puedo acceder vía la clase porque es estático
		Cliente.iva=.10;
		// Esto no tiene sentido: Cliente.setNombre("www");
		ana.iva=.21;
		System.out.println(ana);
		System.out.println(eva);
		System.out.println(pep);
		pep.saludo();
		// Al ser un  método estático no hace falta que tenga
		// una instancia para invocarlo
		Cliente.saludo();
		
		// No hace falta: Utils misutilidades=new Utils();
		System.out.println(Utils.saludo("Ana"));
		System.out.println(Utils.esPrimo(17));

Publicado por

Juan Pablo Fuentes

Formador de programación y bases de datos