Logo ConstructiCat
CodeBust.
Parcourir la section ▾

Remonter le champ.

Problème

Deux classes possèdent le même champ.

Solution

Supprimez le champ des sous-classes et déplacez-le vers la super-classe.

##Exemple

Avant
class Employee {}
class Salesman extends Employee {
  String name;
}
class Engineer extends Employee {
  String name;
}
Après
class Employee {
  String name;
}
class Salesman extends Employee {}
class Engineer extends Employee {}

##Pourquoi refactoriser

Les sous-classes ont grandi et évolué séparément, faisant apparaître des champs et des méthodes identiques (ou presque identiques).

##Avantages

  • Élimine la duplication des champs dans les sous-classes.

  • Facilite le déplacement ultérieur des méthodes dupliquées, si elles existent, des sous-classes vers une super-classe.

##Comment refactoriser

  1. Assurez-vous que les champs servent aux mêmes besoins dans les sous-classes.

  2. Si les champs portent des noms différents, donnez-leur le même nom et remplacez toutes les références aux champs dans le code existant.

  3. Créez un champ portant le même nom dans la super-classe. Notez que si les champs étaient privés, le champ de la super-classe doit être protégé (protected).

  4. Supprimez les champs des sous-classes.

  5. Vous pouvez envisager d'utiliser Auto-encapsuler le champ pour le nouveau champ, afin de le masquer derrière des méthodes d'accès.