informaticaPC

Introducción a la Programación Orientada a Objetos (POO) y UML

Miembros estáticos

Miembros estáticos

Para definir una propiedad o método estático en lenguaje Java se antepone el modificador static a su nombre.

Las propiedades estáticas de una Clase son compartidas por todos los Objetos que heredan de ella, con lo que si su valor es modificado en cualquier de ellos afectará a todas las demás instancias.

El mencionado modificador static es utilizado también para declarar constantes o propiedades cuyo valor no puede ser modificado una vez definido.

Por otro lado, para acceder a los métodos estáticos de una clase no es necesario crear un objeto, pudiendo acceder a ellos a través del propio nombre de clase.

A continuación te mostramos un ejemplo práctico que te ayudará a aprender cómo se implementa todo lo que te acabamos de comentar.

Main.java:

package EjemplosPOO.ejemplo05;

public class Main
{
    public static void main(String[] args)
    {
        // Ahora creamos la instancia para poder usar sus métodos
        Coche c1 = new Coche();

        // Taambién podríamos haberlo hecho así
        c1.setTraccion( Coche.TRACCION_CUATRO_RUEDAS );

        // Hacer esto sería lo mismo que lo anterior (pero tendríamos que conocer
        // los valores) y estar seguros de que el valor de la constante no cambiará
        c1.setTraccion( 3 );

        System.out.println("El coche tiene: " + c1.getTraccionTexto() );

        System.out.println( "---------------" );

        // Creamos otras dos intancias de Coche para comprobar cómo funciona la
        // propiedad estática 'num' (se incrementa en 1 cada vez que se crea un
        // objeto)
        Coche c2 = new Coche();
        Coche c3 = new Coche();
        Coche c4 = new Coche();

        System.out.println( "Numero de instancias de Coche: [" + c1.getNumInstancias() + "]" );

        System.out.println( "---------------" );

        // Ahora llamamos al método estático de la clase Barco (observa que tampoco
        // la hemos instanciado
        Barco.zarpar();
    }
}

Coche.java:

package EjemplosPOO.ejemplo05;

public class Coche
{
    // Esta propiedad estática la usaremos para contar el número de objetos
    // que se vayan creando
    static int num = 0;

    // Las siguientes propiedades estáticas las usaremos como 'constantes', cuyo
    // valor no podrá ser modificado
    public static final int TRACCION_DELANTERA = 1;
    public static final int TRACCION_TRASERA = 2;
    public static final int TRACCION_CUATRO_RUEDAS = 3;

    private int traccion;

    // ----------------------------

    public Coche()
    {
        // Cada vez que se cree un objeto nuevo 'num' se incrementa en 1
        // A las propiedades y métodos estáticos no se puede acceder con 'this'
        num = num + 1;
    }

    // ----------------------------

    public int getTraccion() {
        return this.traccion;
    }

    // ----------------------------

    public void setTraccion(int traccion) {
        this.traccion = traccion;
    }

    // ----------------------------

    public String getTraccionTexto()
    {
        String texto;

        switch( this.traccion )
        {
            case 1:
                texto = "Tracción delantera";
                break;
            case 2:
                texto = "Tracción trasera";
                break;
            case 3:
                texto = "Tracción a las cuatro ruedas";
                break;
            default:
                texto = "Tracción no especificada";
        }

        return texto;
    }

    // ----------------------------

    public int getNumInstancias() {
        return num;
    }
}

Barco.java:

package EjemplosPOO.ejemplo05;

public class Barco
{
    public Barco() {
    }

    // ----------------------------

    public static void zarpar() {
        System.out.println("El barco está zarpando");
    }
}

Al ejecutar el programa veríamos lo siguiente:

Ejemplo

Primera página Anterior Siguiente Última página
Usamos cookies para ofrecerte una experiencia mejorada, el continuar navegando supone que aceptas su uso