KomputilojProgramado

Eroj de Java objekto modelo: abstrakta klaso, interfaco

La ĉefa ideo de la abstrakta klaso estas enhavita en la sekva tezo: kelkfoje postulas neniun kuirado klasoj, kaj en "malseka" formon. Tiaj spacoj ne povas esti rekte uzata (instantiate).

Kio estas abstrakta klaso en Java

Konsideru alian ekzemplon. Estas Java abstrakta klaso Kalendaro en Java.util pakaĵo. Ĝi ne efektivigi specifan kalendaron, kiu estas uzita, ekzemple, en Okcidenta kaj Orienta Eŭropo, Ĉinio, Nord-Koreio, Tajlando, ktp Sed ĝi havas multajn utilajn funkciojn, ekzemple aldonante kelkajn tagojn por specifa dato: .. Ĉi tiuj funkcioj estas postulataj por ajna kalendaro de efektivigo. Estas neeble produkti kopion de la abstrakta klaso.

Abstraktaj klasoj, abstraktaj Java metodoj

Supozu ke vi volas evoluigi plurajn grafikajn elementojn, ekz-e, geometriaj formoj: .. A cirklo, rektangulo, stelo, ktp Kaj estas ujo kiu tiras ilin. Ĉiu ero de la apero estas malsama, do la taŭga metodo (eĉ se ĝi nomiĝas farbo) estas implementado malsame. Tamen, ĉiu komponanto havas multajn similecojn: .. La figuro devus esti inkludita en la skatolo povas havi koloron por esti videbla kaj nevidebla, ktp En aliaj vortoj, vi devas krei patro klaso por ĉiuj el tiuj figuroj, kie ĉiu kompono heredos la ĝeneralaj ecoj. Sed kio pri la farbo metodo? Ja la patro klaso estas vida reprezento. Se vi deklaras farbo metodo en ĉiu klaso sendepende, oni devos analizi kion komponanto procesas, kaj tiam plenumi la rolantaro. Tial, la metodo devas esti deklarita abstrakta en la patro klaso: la metodo agordi la titolo sen korpo. Korpo de ĉiu derivita klaso priskribos lia. En Java, abstrakta klaso povas eniri la abstraktaj metodoj.

Se klaso havas abstraktajn metodojn, la klaso estas abstrakta. Antaŭ la vorto klaso metis la ŝlosilvorto abstrakta, la titolo de la metodo - ankaŭ. Post la titolo de tia metodo estas necese meti punktokomo. En Java, abstrakta klaso povas produkti kopiojn. Se ni volas malpermesi ilian kreo, eĉ se ne ekzistas abstraktaj metodoj de la klaso, la klaso povas esti deklarita abstrakta. Sed se la klaso havas almenaux unu abstrakta metodo, la klaso devas esti abstrakta. Estas neeble klaso estis kaj abstraktaj estas, kaj finalo, kaj la metodon ankaŭ. La metodo povas esti abstrakta, privataj, statika, denaska. Por subklaso oni povus deklari ne-abstrakta kaj generi, ili devas efektivigi ĉiuj abstraktaj metodoj de la gepatroj. La klaso mem povas uzi lian abstraktaj metodoj.

ekzemple:

  • abstrakta klaso AClass {
  • publika abstrakta dezerta metodo (int a) ;
  • }
  • klaso BClass etendiĝas AClass {
  • publika dezerta metodo (int a) {
  • // korpo
  • }

Permesita variabloj kiel ekzemple abstrakta klaso. Ili povas rilati al ne-abstrakta infano de tiu klaso aŭ nula.

Interfacoj en Java - alternativa al multnombra heredaĵo

En Java, ne ekzistas multnombra heredaĵo, ĉar tiam estas certaj problemoj. Klaso povas heredi de pluraj klasoj. Sed li povas efektivigi multoblajn interfacojn.

Java interfacoj kaj abstraktaj klasoj - la konceptoj estas similaj, sed ne identaj. La interfaco povas esti deklarita kiel publika, do ĝi estas havebla al ĉiuj, aŭ vi povas preterlasi la modifilo publiko, poste la interfaco estas disponebla nur ene de lia pakaĵo. Resumo ŝlosilvorto estas ne bezonata, ĉar la interfaco kaj tiel estas abstrakta, sed vi povas specifi.

Interfaco deklaro

Ĝi komenciĝas kun titolo, kaj eble la unua iras al la ŝlosilvorto publiko, tiam - vorto interfaco. Tiam povas esti vorto etendiĝas kaj transigo interfacoj, de kiu heredis tion. Ne estas permesita ripeti, kaj estas neeble formi cikla rilatumo de la heredaĵo rilaton. Tiam venas la interfaco korpo, cxirkauxe frizita krampoj. En la korpo de la interfaco elementoj estas deklarita: Kampo konstantoj kaj abstraktaj metodoj. Ĉiuj kampoj estas publika fina statika - ĉiuj el ĉi tiuj modifiloj ne necesa. Ĉiuj metodoj estas konsiderata publika abstrakta - tiuj modifiloj ankaŭ povas esti precizigita. Nun, sufiĉe diras pri la diferenco inter abstrakta klaso de la Java interfaco.

  • publika interfaco AI etendiĝas B, C, D {
  • // korpo
  • }

Deklari klaso interfaco heredonto, devas uzi la ŝlosilvorto iloj:

  • klaso AClass implementa BI, CI, DI {}

Tio estas, se post la klaso deklaro implementa specifita interfacon nomo, lia klaso ilojn. Heredantoj de ĉi tiu klaso ricevas sian elementoj, do ili ankaŭ vendi ĝin.

Variabloj de interfaco tipo ankaŭ permesita. Ili povas rilati al tipo de la klaso kiu implemente ĉi interfacon, aŭ nula. Tiaj variabloj havas ĉiujn elementojn de la klaso Object, ĉar la objektoj estas generitaj de klasoj, kaj ili, siavice, devenas de la klaso Object.

En ĉi tiu artikolo, ni diskutis iujn elementojn de Java objekto modelo - abstraktaj klasoj, abstraktaj metodoj interfaco.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 eo.atomiyme.com. Theme powered by WordPress.