class C {
int x;
int ajouter(int a){return x+a;}
void ajouter(int a){x = x+a;} //surcharge
void ajouter(int a; int b){x = x+a+b;} //surcharge
}
class SC extends C {
float x; //surcharge
void ajouter(int a; int b){ajouter(a+2*b);} //redéfinition
void ajouter(int a; int b; int c){ajouter(a+b,c);} //surcharge
}
Pour les attributs : la surcharge est interdite dans une classe et permise dans les sous-classes, la redéfinition n'a pas de sens.
Pour les méthodes : la surcharge est permise dans la classe et les sous-classes, la redéfinition est interdite dans la classe et permise dans les sous-classes.