¿Cuál es la diferencia fundamental entre extends y implements en java?
¿Cuál es la diferencia fundamental entre extends y implements en java?
extends se usa para heredar de otra clase, e implements
es para implementar clases abstractas, las clases abstractas tienen
declaracion de funciones sin ser implementades por esa razon cuando usas
implements tienes que sobrescribir todas las funciones de la clase
abstracta.
Source:
/*salvadorG*/
Other Answers (2)
Oldest-
El extends es para declarar una relación de herencia. Esto puede ser entre dos clases (public class ClassA extends ClassB) o entre interfaces (public interface InterfaceA extends InterfaceB).
De esta manera, la clase (o interfaz) B tendrá una relación "es un" con la clase A. Ejemplo:
public class Perro extends Animal
En este caso podemos decir que un Perro es un Animal y podremos usar un Perro en cualquier lugar donde se espere un animal.
El implements por otro lado se usa cuando una clase debe tener los métodos declarados en una interfaz.
Por ejemplo
public interface Parlante {
public void decirAlgo();
}
Luego
public class Persona implements Parlante{
public void decirAlgo(){
System.out.println("Hola");
}
}
public class Perro implements Parlante {
public void decirAlgo(){
System.out.println("Guau");
}
}
El implements obliga a la clase a (justamente) implementar los métodos que estaban definidos en la interfaz. Como se puede ver cada clase implementa la interfaz a su manera.
Además se pueden hacer cosas como
Parlante p = new Perro();
Parlante p1 = new Persona();
y hacer
p.decirAlgo();
p1.decirAlgo();
y cada uno se comportará de manera distinta aunque hayas declarado ambos como parlantes. De la misma manera que antes en cada lugar donde se espere un Parlante se podrá pasar un objeto de cualquier clase que implemente dicha interfaz.
Las interfaces se utilizan para definir comportamiento.
Para no marearte más acá, cuando entiendas esto fijate lo que es una clase abstracta, qeu es algo a mitad de camino entre ambas cosas.
Espero haberte ayudado.
Saludos -
Un problema que aparece con la herencia multiple es que si dos o más objetos padres implementan un método cuando tu llamas a ese método en el hijo el compilador no sabe a cual implementación llamar. si a la del padre 1 o la del padre 2. Es por esto que java no permite la herencia múltiple. Entonces lo que dice básicamente es que si quieres heredar usas extends pero si además quisieras utilizar herencia multiple la puedes simular implementando una interfaz. Así si el onjeto padre tiene el método correr() y la interfaz también la tiene, cuando llames a ese metodo desde el hijo sabe que sólo puede ejecutar el del padre y no el de la interfaz.
No hay comentarios:
Publicar un comentario