---
title: "Extraer superclase"
type: "refactoring-technique"
slug: "extract-superclass"
url: "http://localhost:3000/es/extract-superclass.md"
category: "Dealing with Generalization"
description: "Problema: Tienes dos clases con campos y métodos comunes. Solución: Crea una superclase compartida para ellas y mueve a ella todos los campos y métodos idénticos."
---
# Extraer superclase

> Problema: Tienes dos clases con campos y métodos comunes. Solución: Crea una superclase compartida para ellas y mueve a ella todos los campos y métodos idénticos.

## Problem

Tienes dos clases con campos y métodos comunes.

## Solution

Crea una superclase compartida para ellas y mueve a ella todos los campos y métodos idénticos.

## Why Refactor

Un tipo de duplicación de código se produce cuando dos clases realizan tareas similares de la misma manera, o realizan tareas similares de formas diferentes. Los objetos ofrecen un mecanismo integrado para simplificar tales situaciones mediante la herencia. Pero a menudo esta similitud pasa desapercibida hasta que las clases ya están creadas, lo que obliga a crear una estructura de herencia más adelante.

## Benefits

* Desduplicación de código. Los campos y métodos comunes ahora “viven” en un único lugar.

## How to Refactor

1. Crea una superclase abstracta.
2. Usa [Subir campo](/es/pull-up-field), [Subir método](/es/pull-up-method) y [Subir cuerpo del constructor](/es/pull-up-constructor-body) para mover la funcionalidad común a una superclase. Empieza por los campos, ya que además de los campos comunes necesitarás mover los campos que se utilizan en los métodos comunes.
3. Busca lugares en el código cliente donde el uso de subclases pueda sustituirse por tu nueva clase (como en las declaraciones de tipos).
## Relations

**Similar techniques**

- [Extraer interfaz](/es/extract-interface.md)

**Eliminates smells**

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

