Buenas tardes, hoy los traigo la Parte II del Capitulo 7, en el cual abarcaré solo las Interface, , donde prloseguiremlos con la Encapsulación, y una última fracción con ejempllos avanzadlos para explicarnlos todo este montón de teoría. Como dije anteriormente, es un Capítulo muy largo por lo cual constará de bastantes fraccións, pero es mejor ir paso a paso, despacio y con buena letra. Interfaces Son usados en el lenguaje Java para definir un set definido de funcionalidades de las clas clases que las implementan. Al opuesto que heredar una clase base, una clase es abierta de implementar tantas interfaces como se necesiten. Una interface puede ser pensada como una clase abstracta con todos os métodos abstractos. Cuando una clase implementa una interface, esto necesita que se implementen todos os métodos definidos en la interface. Son usadas para crear una interface pública estándar para items similares. Esto habilita que el código sea mas modular. Se usa la sentencia interface para crear una interface en el próximo ejemplo: public interface Phone { public void dialNumber(int number); public boolean isCallInProgress(); El previo ejemplo es una interface para un teléfono muy básica. El próximo ejemplo demuestra esta interface siendo implementada en una clase CellPhone y una clase LandLinePhone. La sentencia implements es usada para implementar la interface: public class LandLinePhone implements Phone{ private boolean callInProgress; public void dialNumber(int number) { //Dial number via wired network public boolean isCallInProgress() { return callInProgress; public class CellPhone implements Phone{ private boolean callInProgress; public void dialNumber(int number) { //Dial number via cell network public boolean isCallInProgress() { return callInProgress; Cuando una interface es implementada, todos estos métodos deben ser implementados en esta clase. Es probable implementar múltiples interfaces. Cuando mas de una interface está siendo usada, todos estos métodos definidos en cada uno debe ser implementados. Cualquier método sin implementar causará yerros al compilar. Lo próximo es un ejemplo de una clase que implementa 2 interfaces: public class VideoPhone implements Phone, VideoPlayer{ ... El mayor avance de usar interfaces es que cualquier clase puede usar la misma interface y tendrán os mismos métodos públicos, como veremos en la figura siguiente. Esto implica que la clase CellPhone mostrada anteriormente podría ser usada en vez de la clase LandLinePhone. Cambiar entre estas clases no requerirían otro cambio en el código mas que el tipo declarado. Esto nos hace una idea de lo que es el polimorfismo, que veremos en detalle en el capitulo 8. Advanced Concepts of Inheritance En las secciones pasadas vimos casos básicos sobre la herencia. SIn embargo es probable y general tener mas niveles de herencia. De hecho cada clase en el lenguaje Java hereda de la clase fundamento Object. Esto incluye las clases creadas por un desarrollador. El uso de la clase fundamento Object es implícita y no es indispensable extenderla explícitamente con la sentencia extends. Esto significa que en os ejempos previos donde una clase heredaba de otra, había realmente 2 niveles de herencia. Volviendo a os ejempos de os animales, la clase Dog2 heredaba de la clase Animal, y la clase Animal heredaba de la clase Object. Esto significa que la clase Dog2 ganaba toda la funcionalidad de ambas clases. Si una clase sustituye al método de otra, el nuevo método baja en la cadena de la herencia. La cadena de la herencia puede continuarse tanto como sea aplicable a la aplicación, es decir, una Clase A puede ser extendida a una Clase B que peude expandirse a una Clase C que puede expandirse a una Clase D. Las clases pueden ser combinación entre abstractas o concretas. Las clases tambien facultan implementar tantas interfaces como sea posible. las intetrfaces pueden tambien expandirse a otras interfaces. Cuando una interface es extendida a otra, esto gana todos os métodos definidos en la interface extendida. Al opuesto de las clases, una interface puede ser extendida por una o algúnas interfaces. Esto se logra con la sentencia extends seguido de una lista de interfaces delimitadas por comas. El próximo diagrama representa un arbol probable de herencia. En la fracción de bajo del arbol vemos una clase concreta SportsCar. Esta clase es extendida de la clase abstracta Car. La clase Car es extendida de la clase PassengerVehicle, que es extendida de la clase Object. La clase PassengerVehicle tambien implementa la interface Drivable. En este ejemplo la clase SportsCar tiene entrada a todos os métodos visibles e instance variables de PassengerVehicle y de la clase Car. la clase SportsCar debe tambien implementar cualquier método que no afuera implementado, incluyendo lo que son requeridos por la interface Drivable. Aquí finalizamos con esta Parte del capitulo 7, en el próximo profundizaremos sobre la Encapsulación en Java, para que sirve y cual es su meta en el código. Cualquier aporte o corrección es bienvenida. Saludos!!!