Concepto de interface e herdanza múltiple en Java. Implementos Exemplos e diagramas de clases. (CU00696B)

Escrito por Alex Rodríguez

Resumen: entrega Nº96 do curso “Aprende Java Programación desde o inicio “.
codificación de aprendizaxepragramar.com: CU00696B

concepto de interface múltiple e herdanza en Java. Implementos.

En seccións anteriores do tutorial estudamos os conceptos de herdanza e polimorfismo. Ata agora consideramos escenarios nos que unha clase herda só a outra clase. Sería posible aumentar un escenario onde unha clase herda de máis dunha clase (herdanza múltiple)?

Java Patrimonio múltiple

O contorno da figura anterior representaría que habería clases como professormerito que herdaría dúas clases: profesor e conferenciante. Este sería un caso de herdanza múltiple, e representaría que a subclase comparte as características das dúas superclases e tamén ten as súas características específicas. A herdanza múltiple, para a consistencia dos programas e as linguas ten unha complexidade relativamente alta. Por iso, algúns idiomas orientados a obxectos permiten que eles e outros non o fan. Java non permite unha herdanza múltiple, pero a cambio ten a construción chamada “interface” que permite unha forma de simulación limitada ou implementación de herdanza múltiple.

xa temos foi discutido o concepto de interface de alusión á sinatura de métodos ou información pública das clases. Tamén realizamos unha primeira aproximación na interface de termo de Java e, como similar, dixemos que podería considerarse como unha regra xeral do urbanismo Nunha cidade. Imos profundar o concepto de interface dentro de Java. Unha interface é unha construción similar a unha clase abstracta en Java, pero coas seguintes diferenzas:

a) No encabezado úsase a interface de palabras clave en vez de clase ou clase abstracta. Por exemplo, a interface pública nameninterface {…}

b) cada método é abstracto e público sen necesidade de declaralo, é dicir, non necesita poñer público abstracto Que por defecto todos os métodos son públicos abstractos. Polo tanto, unha interface en Java non implementa ningún dos métodos que declara: ningún dos seus métodos ten un corpo.

c) As interfaces non teñen ningún constructor.

d) Unha interface só admite campos de tipo “final estático”, é dicir, campos de clase, públicos e constantes. Non hai necesidade de incluír as palabras finais estáticas públicas porque todo Os campos serán tratados coma se tomasen estas palabras. Lembre que estático equivalente a “clase” e final a “constante”. As interfaces poden ser un lugar interesante para declarar constantes que van ser utilizadas por diferentes clases nos nosos programas.

e) Unha clase pode derivar dunha interface do mesmo xeito que pode derivar doutra clase. Con todo, dise que a interface está implementada (implementa), Non se estende (esténdese) polas súas subclases. Polo tanto, declarar a herdanza dunha interface, utilízase a palabra clave implem Ents en vez de estender.

Unha clase pode ser implementada unha ou máis interfaces en Java (está indicado con implementosinterface1, nameInface2, … etc.), pero só pode estender unha clase. Implementar varias interfaces nunha soa clase é a cousa máis próxima que Java ten a unha herdanza múltiple.

Podemos declarar variables do tipo de interface, pero para inicializalos usaremos unha clase específica que a implica Por exemplo, lista < string > millón; Declara unha variable co tipo de interface de lista. Inicialización Millist = nova lista < string > (); Non é posible porque non pode crear un obxecto do tipo definido por unha interface. No cambio Milista = New LinkedList < string > (); Si, é válido.

diremos que unha interface en Java define un tipo cuxos métodos son todos sen implementación e que equivale a unha herdanza múltiple (clases abstractas) nunha clase.Se unha clase implementa unha interface, pode ocorrer:

a) que implementaba os métodos da interface sobrescribilos (pode ser unha clase específica).

b) que non implementen os métodos da interface: será unha clase abstracta e debe ser realizada pola palabra clave abstracta no encabezado para indicalo.

Considere un diagrama de clases como este , que podería usar para un programa de xestión nun centro educativo:

interface java

Vemos que as interfaces son identificadas por Bluej con < < > Sobre a parte superior da túa icona. Dentro destas clases, as relacións están determinadas por este código:

Actor de interface pública {…}: define o actor Actor Appr FronApraGaGar.com interface.

Public Abstract Class Person implementa ao actor {…}: define a clase abstracta como unha implementación da interface do actor.

Profesor de clase pública estende a extensión da clase da clase de clase .

O estudante de clase pública estende a persoa {…}: define a clase de estudante como unha extensión da clase de clase.

Obxecto de obxecto da interface pública.

O vehículo de clase pública implementa o actor, obxectos de {…}: define que a clase do vehículo implementa dúas interfaces, a interface do actor ea interface de obxectos, é dicir, que un vehículo é ao momento do actor e objeto.

O coche de clase pública estende o vehículo {…}: define a clase do automóbil como unha extensión da clase do vehículo.

Bicicleta de clase pública Exten DS vehículo {…}: define a clase de bicicleta como unha extensión da clase do vehículo.

pode herdar doutro e implementar unha ou máis interfaces. Neste caso, en primeiro lugar, a relación de herdanza sitúase na superclase e despois as interfaces que implementan. Por exemplo, neste esquema:

Java interface

A definición da clase de árbore sería así: a árbore de clase pública estende o actor de implementos vexetais {…}. A clase herda de actor de vexetais e implementos.

Como saber se unha clase é un candidato a definirse como unha interface?

a) Se necesitamos calquera método con corpo que xa sabemos que non vai ser unha interface porque todos os métodos dunha interface deben ser abstractos.

b) Se necesitamos unha clase” herdada “de máis dunha superclase, esas superclases son candidatos a ser interfaces.

c) nalgún Os casos é tan viable que definía unha clase como unha interface que, como unha clase abstracta, pero colocada nesta situación prefire optar por unha interface porque é máis flexible e extensible: permitiranos implementar varias interfaces (aproveitamos da herdanza múltiple das interfaces). Pola contra, unha clase non pode herdar varias clases.

Lembre que o campo S declarados son campos estáticos aínda que non se indique especificamente:

actor de interface pública {

int action = 1; int inactive = 0; // … descanso do código de interface Exemplo de aprendizaxeRapragramar.com }

Neste caso, activo e inactivo se comporta como final estática pública (constante) para todas as clases que implementan esta interface.

Cal é o dos principais intereses de usar interfaces? Ser capaz de usar o polimorfismo: por exemplo, poder reunirse en obxectos de colección do tipo de interface pero que se implementan en diferentes tipos. Ou para poder tratar obxectos de diferentes tipos, pero pertencen ao mesmo Supertype porque implementan unha interface.

Exercicio

Responde as seguintes preguntas:

a ) É unha clase herdeira de dúas clases en Java?

b) A interface Java pode ter métodos que inclúen unha declaración de tempo?¿Pode unha interface Java ter métodos que inclúen unha declaración de sistema.out.println?

c) é un obxecto Java do tipo definido por unha interface? Pode un obxecto Java estar ao mesmo tempo do tipo definido por unha interface e tipo definido por unha clase que non implementa a interface? Un obxecto Java pode ser ao mesmo tempo do tipo definido por unha interface e o tipo definido por unha clase que implementa a interface?

para comprobar se as súas respostas son correcto pode consultar nos foros de aprendizaxepragramar.com.

para acceder á información xeral sobre este curso e a lista completa de entregas Nesta ligazón: ver o curso completo.

Deixa unha resposta

O teu enderezo electrónico non se publicará Os campos obrigatorios están marcados con *