4,52/5
(83 opiniones)
|12480 alumnos|Fecha publicación: 07/09/2004
Imaginemos -volviendo al ejemplo del coche- que queremos crear una clase llamada CochePolicia, que además de acelerar y frenar pueda activar y desactivar una sirena. Podríamos crear una clase nueva llamada CochePolicia con los atributos y clases necesarios tanto para frenar y acelerar como para activar y desactivar la sirena. En lugar de eso, vamos a aprovechar que ya tenemos una clase llamada Coche y que ya contiene algunas de las funcionalidades que queremos incluir en CochePolicia. Veámoslo sobre un ejemplo.
Class CochePolicia extends Coche {
// variables
int sirena;
// métodos
void sirenaOn() {
sirena=1;
}
void sirenaOff() {
sirena=0;
}
}
Lo primero que nos llama la atención de la
declaración de la clase es su primera línea. Tras el nombre de la
clase hemos añadido la palabra extends seguido de
la clase padre, es decir, de la cual heredamos los métodos y
atributos. La clase CochePolicia posee dos
atributos, velocidad, que ha sido heredado y
sirena, que ha sido declarada dentro de la clase
CochePolicia. Con los métodos sucede exactamente
igual. La clase hija ha heredado acelerar() y
frenar(), además le hemos añadido los métodos
sirenaOn() y sirenaOff(). Un
objeto instancia de CochePolicia puede utilizar
sin ningún problema los métodos acelerar() y
frenar() tal y como hacíamos con los objetos
instanciados de la clase Coche.
No es posible heredar de dos o más clases a la vez (al contrario que en C++). Esto se llama herencia múltiple, y suele conllevar más problemas que ventajas, así que los diseñadores de Java prefirieron no incluir esta característica.
Polimorfismo.- El polimorfismo es otra de las grandes característica de la POO. La palabra polimorfismo deriva de poli (múltiples) y del término griego morfos (forma). Es decir, múltiples formas.
Supongamos que queremos dotar al método frenar de más funcionalidad. Queremos que nos permita reducir hasta la velocidad que queramos. Para ello le pasaremos como parámetro la velocidad, pero también sería útil que frenara completamente si no le pasamos ningún parámetro. El siguiente código cumple estos requisitos.
// Declaración de la clase coche
class Coche {
// Atributos de la clase coche
int velocidad;
// Métodos de la clase coche
void acelerar(int velocidad);
void frenar() {
// Ponemos a 0 el valor del atributo velocidad
velocidad = 0;
}
void frenar(int velocidad) {
// Reducimos la velocidad
if (velocidad < this.velocidad)
this.velocidad = velocidad;
}
}
Como ves tenemos dos métodos frenar. Cuando llamemos al método frenar(), Java sabrá cual tiene que ejecutar dependiendo de si lo llamamos con un parámetro de tipo entero o sin parámetros. Esto que hemos hecho se llama sobrecarga de métodos. Podemos crear tantas versiones diferentes del método siempre y cuando sean diferentes. El constructor de una clase también puede ser sobrecargado. En el ejemplo, encontramos la palabra reservada this. Ésta se utiliza para indicar que a la variable que nos referimos es la de la clase, y no la que se ha pasado como parámetro. Hay que hacer esta distinción, ya que tienen el mismo nombre.
Hay 83 opiniones. Opina sobre este curso.
| Cursos | Valoración | Alumnos | Vídeo | |
|---|---|---|---|---|
|
Funciones en C (primera parte) Curso de programacíon informática sobre Funciones en C en el orden de los fundamentos de la programación. Comprende el desarrollo de un software utilizando funciones y a ... [17/10/08] |
|
2.816 | ||
|
Procesos en C. Sincronización (primera parte) Curso de informática sobre sincronización de procesos en C y señales en linux que te ofrece la posibilidad de comprender los mecanismos de comunicación entre procesos inf... [21/10/08] |
|
993 | ||
|
Java Java nació con el deseo por parte de Sun de buscar un lenguaje de programación enfocado a electrodomésticos. Se necesitaba alg&uacu... [23/04/04] |
|
49.291 | ||
Publicar en
del.icio.us
digg
meneame