Aggiungo che l'esempio citato è particolare.
Non hai altro modo di disegnare su un JPanel se non ridefinendone il comportamento standard... come potresti, altrimenti, disegnare sul JPanel? Il comportamento standard è quello di disegnare uno sfondo opaco (se richiesto) con un colore uniforme dettato dalle politiche del Look & Feel.

La chiave è tutta qui: se hai bisogno di "ridefinire" il comportamento standard di una classe, la dovrai estendere. Se ciò che essa fornisce è già più che sufficiente, al contrario, la andrai solo ad usare.

Ad esempio, se devi visualizzare del testo, non ha senso "estendere" JLabel... è sufficiente "usare" JLabel.


Ciao.