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.