Logotipo do ConstructiCat
CodeBust.
Explorar a seção ▾

Subir Campo.

Problema

Duas classes têm o mesmo campo.

Solução

Remova o campo das subclasses e mova-o para a superclasse.

##Exemplo

Antes
class Employee {}
class Salesman extends Employee {
  String name;
}
class Engineer extends Employee {
  String name;
}
Depois
class Employee {
  String name;
}
class Salesman extends Employee {}
class Engineer extends Employee {}

##Por que refatorar

As subclasses cresceram e evoluíram separadamente, fazendo surgir campos e métodos idênticos (ou quase idênticos).

##Benefícios

  • Elimina a duplicação de campos nas subclasses.

  • Facilita a posterior realocação de métodos duplicados, se existirem, das subclasses para uma superclasse.

##Como refatorar

  1. Certifique-se de que os campos são usados para as mesmas necessidades nas subclasses.

  2. Se os campos tiverem nomes diferentes, dê a eles o mesmo nome e substitua todas as referências aos campos no código existente.

  3. Crie um campo com o mesmo nome na superclasse. Observe que, se os campos eram private, o campo da superclasse deve ser protected.

  4. Remova os campos das subclasses.

  5. Você pode considerar usar Autoencapsular Campo para o novo campo, a fim de ocultá-lo por trás de métodos de acesso.