---
title: "Subir Campo"
type: "refactoring-technique"
slug: "pull-up-field"
url: "http://localhost:3000/pt-br/pull-up-field.md"
category: "Dealing with Generalization"
description: "Problema: Duas classes têm o mesmo campo. Solução: Remova o campo das subclasses e mova-o para a superclasse."
---
# Subir Campo

> Problema: Duas classes têm o mesmo campo. Solução: Remova o campo das subclasses e mova-o para a superclasse.

## Problem

Duas classes têm o mesmo campo.

## Solution

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

## Why Refactor

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

## Benefits

* Elimina a duplicação de campos nas subclasses.
* Facilita a posterior realocação de métodos duplicados, se existirem, das subclasses para uma superclasse.

## How to Refactor

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](/pt-br/self-encapsulate-field) para o novo campo, a fim de ocultá-lo por trás de métodos de acesso.
## Relations

**Similar techniques**

- [Subir Método](/pt-br/pull-up-method.md)

**Opposite refactorings**

- [Descer Campo](/pt-br/push-down-field.md)

**Eliminates smells**

- [Código Duplicado](/pt-br/smells/duplicate-code.md)

