4,52/5
(83 opiniones)
|11910 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 | |
|---|---|---|---|---|
|
Técnicas para el desarrollo de computación móvil (orientado a PDA) Uno de los nuevos paradigmas en el desarrollo de proyectos informáticos es la computación móvil (computación Ubicua). Aquí se verá todo lo que involucra la creación de un... [31/03/06] |
|
1.307 | ||
|
SQL SQL (Structured Query Language) es un lenguaje de programación para acceder y manipular bases de datos. SQL surgió de un proyecto de IBM en el que investigaba e... [10/05/04] |
|
34.042 | ||
|
Usabilidad web La usabilidad es el principal elemento con el cual debe contar toda página Web. Yo defino Usabilidad como la capacidad de una aplicación de ser agradable, eficiente y fá... [17/07/06] |
|
1.751 | ||
Publicar en
del.icio.us
digg
meneame