Ragazzi se una classe implementa una interfaccia, la classe dovrà andare ad implementare TUTTI i i metodi che fornisce l'interfaccia , giusto ?

Mentre se ho una classe astratta, ho visto che non posso avere metodi astratti e statici, poichè non potrebbero essere ereditati dalla classe che estende la classe astratta. Però se avessi una cosa del tipo:

codice:
abstract class ClasseAstratta {
   abstract void foo();
   // Posso avere metodi non astratti
   // posso avere attributi
}
Qualora una classe estendesse ClasseAstratta, dovrà implementare necessariamente tutti i metodi ?( come per le interfacce )... Inoltre posso avere metodi non astratti ma statici, attributi statici ?


Grazie anticipatamente.