10.7 Ejemplo práctico: creación y uso de interfaces

En nuestro siguiente ejemplo (fi guras 10.11 a 10.13) analizaremos nuevamente el sistema de nómina de la sección 
10.5. Suponga que la compañía involucrada desea realizar varias operaciones de contabilidad en una sola aplica-
ción de cuentas por pagar; además de calcular los ingresos de nómina que deben pagarse a cada empleado, la com-
pañía debe también calcular el pago vencido en cada una de varias facturas (por los bienes comprados). Aunque se 
aplican a cosas no relacionadas (es decir, empleados y facturas), ambas operaciones tienen que ver con el cálculo de 
algún tipo de monto a pagar. Para un empleado, el pago se refi ere a sus ingresos. Para una factura, el pago se refi ere 
al costo total de los bienes listados en la misma. ¿Podemos calcular esas cosas distintas, como los pagos vencidos 
para los empleados y las facturas, en forma polimórfi ca en una sola aplicación? ¿Ofrece Java una herramienta que 
requiera que las clases no relacionadas implementen un conjunto de métodos comunes (por ejemplo, un método 
que calcule un monto a pagar)? Las 

interfaces

 de Java ofrecen exactamente esta herramienta.

Las interfaces defi nen y estandarizan las formas en que pueden interactuar las cosas entre sí, como las per-

sonas y los sistemas. Por ejemplo, los controles en un radio sirven como una interfaz entre los usuarios del radio 
y sus componentes internos. Los controles permiten a los usuarios realizar un conjunto limitado de operaciones 
(por ejemplo, cambiar la estación, ajustar el volumen, seleccionar AM o FM), y distintos radios pueden imple-
mentar los controles de distintas formas (por ejemplo, el uso de botones, perillas, comandos de voz). La interfaz 
especifi ca 

qué operaciones debe permitir el radio que realicen los usuarios, pero no especifi ca cómo deben realizarse

las operaciones. De manera similar, la interfaz entre un conductor y un automóvil con transmisión manual inclu-
ye el volante, la palanca de cambios, el pedal del embrague, el pedal del acelerador y el pedal del freno. Esta misma 
interfaz se encuentra en casi todos los automóviles de transmisión manual, lo que permite que alguien que sabe 
cómo manejar cierto automóvil de transmisión manual sepa cómo manejar casi cualquier automóvil de transmi-
sión manual. Los componentes de cada automóvil individual pueden tener una apariencia ligeramente distinta, 
pero el propósito general es el mismo; permitir que las personas conduzcan el automóvil.

Los objetos de software también se comunican a través de interfaces. Una interfaz de Java describe un 

conjunto de métodos que pueden llamarse sobre un objeto, para indicar al objeto que realice cierta tarea, o que 
devuelva cierta pieza de información, por ejemplo. El siguiente ejemplo introduce una interfaz llamada 

PorPa-

gar

, la cual describe la funcionalidad de cualquier objeto que deba ser capaz de recibir un pago y, por lo tanto, 

debe ofrecer un método para determinar el monto de pago vencido apropiado. La 

declaración de una interfaz

empieza con la palabra clave 

interface

 y sólo puede contener constantes y métodos 

abstract

. A diferencia de 

las clases, todos los miembros de la interfaz deben ser 

public

, y las interfaces no pueden especifi car ningún detalle 

de implementación, como las declaraciones de métodos concretos y variables de instancia. Por lo tanto, todos 
los métodos que se declaran en una interfaz son 

public abstract

de manera implícita, y todos los campos son 

implícitamente

public

,

static

 y 

final

.

Buena práctica de programación 10.1

De acuerdo con el capítulo 9 de la Especifi cación del lenguaje Java, es un estilo apropiado declarar los métodos de 
una interfaz sin las palabras clave 

public

 y 

abstract

, ya que son redundantes en las declaraciones de los métodos 

de la interfaz. De manera similar, las constantes deben declararse sin las palabras clave 

public

,

static

 y 

final

, ya 

que también son redundantes.

Para utilizar una interfaz, una clase debe especifi car que implementa (

implements

) a esa interfaz y debe 

declarar cada uno de sus métodos con la fi rma especifi cada en la declaración de la interfaz. Una clase que no 
implementa a todos los métodos de la interfaz es una clase abstracta, y debe declararse como 

abstract

. Imple-

mentar una interfaz es como fi rmar un contrato con el compilador que diga, “Declararé todos los métodos espe-
cifi cados por la interfaz, o declararé mi clase como 

abstract

”.

Error común de programación 10.6

Si no declaramos ningún miembro de una interfaz en una clase concreta que implemente (

implements

) a esa inter-

faz, se produce un error de compilación indicando que la clase debe declararse como 

abstract

.

Por lo general, una interfaz se utiliza cuando clases dispares (es decir, no relacionadas) necesitan compartir 

métodos y constantes comunes. Esto permite que los objetos de clases no relacionadas se procesen en forma 
polimórfi ca; los objetos de clases que implementan la misma interfaz pueden responder a las mismas llamadas 
a métodos. Usted puede crear una interfaz que describa la funcionalidad deseada y después implementar esta 

10.7 Ejemplo práctico: creación y uso de interfaces 

439

10_MAQ_CAP_10.indd439

4/19/081:25:21AM