Estoy organizando una competencia. Tienes que diseñar tu propio auto.
¿Qué define un auto? Bueno, en aras de la discusión, digamos que tiene cuatro ruedas, al menos un asiento y un motor.
Esa es una idea bastante floja, ¿no? Se podría imaginar varias cosas muy diferentes que coinciden con la descripción, estoy seguro. Pero de cualquier manera, esa es la especificación que debe cumplir para tener la oportunidad de ganar.
- ¿Cuánto cuesta construir un diseño de aplicación de Android?
- ¿Es mala idea usar JavaScript para el desarrollo de Android?
- Cómo convertirte en un genial desarrollador de juegos de Android
- ¿Debo comprar un teléfono Android para aprender a desarrollar aplicaciones?
- ¿Cuál es la mejor base de datos para usar con Android?
La idea básica no realizada que le he dado es que es un buen candidato para una interfaz. Hagamos uno y llamemos a ese auto .
Desde su punto de vista, puede comenzar con algunas materias primas y construir algo que satisfaga el requisito.
Ahí tenemos el SofaCar . Es un automóvil que funciona desde cero y que implementa la interfaz Car .
Pero eso fue mucho trabajo, ¿no? Y arruinaste los muebles de tu abuela.
Podrías haber tomado algo que ya existe y entrometerse en él.
Esa hermosa vista para la vista es, erm, FerrariF430 que extiende el PeugeotCoupe . A su vez, ya sea directamente o por medio de sus antepasados, PeugeotCoupe implementa Car .
No necesitábamos absolutamente la interfaz del coche para ser justos. Podrías haber producido las mismas cosas sin esa etiqueta. Pero entonces, ¿cómo sabríamos que se ajusta a la factura?
‘Implementa’ y ‘extiende’ son dos formas de tratar las relaciones de herencia. Uno es una pizarra limpia y uno se basa en otra cosa.
Para comprender realmente esto y hacer cualquier cosa con enojo, como han sugerido otros, debe comprender un conjunto mucho más amplio de conceptos y paradigmas de OOP. Pero esa es la diferencia fundamental, y por qué tenemos ambos.