Les classes anònimes són una característica poderosa de Java que permet crear subclasses d'una classe o implementar interfícies de manera ràpida i concisa. Aquestes classes no tenen un nom explícit i es defineixen i instancien en una sola expressió. Són especialment útils quan es necessita una classe que s'utilitzarà només una vegada.

Conceptes Clau

  • Definició i Ús: Les classes anònimes es defineixen dins d'una expressió i s'utilitzen immediatament.
  • Sintaxi: La sintaxi de les classes anònimes és compacta i es basa en la creació d'una nova instància d'una classe o interfície.
  • Limitacions: Les classes anònimes no poden tenir constructors explícits ni mètodes estàtics.

Sintaxi i Estructura

La sintaxi bàsica per crear una classe anònima és la següent:

new SuperClassOrInterface() {
    // Implementació de mètodes
};

Exemple 1: Classe Anònima que Extén una Classe

abstract class Animal {
    abstract void makeSound();
}

public class Main {
    public static void main(String[] args) {
        Animal myAnimal = new Animal() {
            @Override
            void makeSound() {
                System.out.println("Roar!");
            }
        };
        myAnimal.makeSound(); // Output: Roar!
    }
}

Exemple 2: Classe Anònima que Implementa una Interfície

interface Greeting {
    void sayHello();
}

public class Main {
    public static void main(String[] args) {
        Greeting greeting = new Greeting() {
            @Override
            public void sayHello() {
                System.out.println("Hello, World!");
            }
        };
        greeting.sayHello(); // Output: Hello, World!
    }
}

Exercicis Pràctics

Exercici 1: Classe Anònima amb una Interfície

Crea una classe anònima que implementi la interfície Runnable i imprimeixi un missatge a la consola.

public class Main {
    public static void main(String[] args) {
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                System.out.println("Running in a thread!");
            }
        };
        Thread thread = new Thread(runnable);
        thread.start();
    }
}

Exercici 2: Classe Anònima amb una Classe Abstracta

Defineix una classe abstracta Shape amb un mètode abstracte draw(). Crea una instància de Shape utilitzant una classe anònima que implementi el mètode draw() per dibuixar un cercle.

abstract class Shape {
    abstract void draw();
}

public class Main {
    public static void main(String[] args) {
        Shape circle = new Shape() {
            @Override
            void draw() {
                System.out.println("Drawing a circle");
            }
        };
        circle.draw(); // Output: Drawing a circle
    }
}

Errors Comuns i Consells

  • No es poden definir constructors: Les classes anònimes no poden tenir constructors explícits. Si necessites inicialitzar alguna cosa, fes-ho dins d'un bloc d'inicialització.
  • No es poden definir mètodes estàtics: Les classes anònimes no poden tenir mètodes estàtics.
  • Ús limitat: Les classes anònimes són útils per a implementacions ràpides i senzilles. Si la classe necessita ser reutilitzada o és massa complexa, considera definir una classe normal.

Resum

Les classes anònimes són una eina útil per crear implementacions ràpides i senzilles de classes i interfícies. Permeten escriure codi més compacte i llegible quan només es necessita una instància única d'una classe. Tot i això, tenen limitacions que cal tenir en compte, com la impossibilitat de definir constructors o mètodes estàtics. Amb la pràctica, podràs identificar quan és adequat utilitzar classes anònimes i com treure'n el màxim profit.

Curs de Programació en Java

Mòdul 1: Introducció a Java

Mòdul 2: Flux de Control

Mòdul 3: Programació Orientada a Objectes

Mòdul 4: Programació Orientada a Objectes Avançada

Mòdul 5: Estructures de Dades i Col·leccions

Mòdul 6: Gestió d'Excepcions

Mòdul 7: Entrada/Sortida de Fitxers

Mòdul 8: Multithreading i Concurrència

Mòdul 9: Xarxes

Mòdul 10: Temes Avançats

Mòdul 11: Frameworks i Llibreries de Java

Mòdul 12: Construcció d'Aplicacions del Món Real

© Copyright 2024. Tots els drets reservats