Mis on Java liides?
Interface Java programmeerimine on defineeritud kui abstraktne tüüp saab määrata käitumist klassi. Java-liides sisaldab staatilisi konstante ja abstraktseid meetodeid. Klass võib rakendada mitut liidest. Java-s deklareeritakse liidesed liidese märksõna abil. Kõik liidese meetodid on kaudselt avalikud ja abstraktsed.
Liidese deklareerimise süntaks
interface {//methods}
Klassis liidese kasutamiseks lisage klassi nime ja liidese nime järele märksõna „rakendab”.
Näide liidese juurutamiseks
class Dog implements Pet
interface RidableAnimal extends Animal, Vehicle
Kui videole pole juurdepääsu, klõpsake siin
Miks on liides vajalik?
Java liidese mõiste paremaks mõistmiseks vaadake näidet. Klassil "Meediumipleier" on kaks alaklassi: CD-mängija ja DVD-mängija. Mõlemal on muusika mängimiseks oma ainulaadne rakendusmeetod.
Teine klass "Combo drive" pärib nii CD kui DVD (vt allolevat pilti). Millise mängumeetodi see peaks pärima? See võib põhjustada tõsiseid disainiprobleeme. Seega ei võimalda Java mitmekordset pärimist.
Nüüd võtame veel ühe koera näite.
Oletame, et teil on nõue, kus klass "koer" pärib klassi "loom" ja "lemmikloom" (vt allolevat pilti). Kuid Java-s ei saa kahte klassi laiendada. Mida sa siis teeksid? Lahendus on Interface.
Liidese reeglistik ütleb:
- Liides on 100% abstraktne klass ja sellel on ainult abstraktsed meetodid.
- Klass võib rakendada suvalist arvu liideseid.
Klass Koer saab laiendada klassi "Loom" ja rakendada liidest kui "Lemmikloom".
Java liidese näide:
Samm 1) Kopeerige järgmine kood redaktorisse.
liides Pet {avaliku tühisuse test ();}klassi koer rakendab lemmiklooma {avaliku tühisuse test () {System.out.println ("Liidese meetod rakendatud");}public staatiline void main (String args []) {Lemmiklooma p = uus koer ();p.test ();}}
Samm 2) Salvestage, kompileerige ja käivitage kood. Jälgige väljundit.
Erinevus klassi ja liidese vahel
Klass | Liides |
---|---|
Klassis saate muutuja algeks saada ja objekti luua. | Liideses ei saa muutujat instantiseerida ega objekti luua. |
Klass võib sisaldada konkreetseid (koos rakendusega) meetodeid | Liides ei tohi sisaldada konkreetseid (koos rakendusega) meetodeid |
Klassidega kasutatavad juurdepääsu täpsustajad on privaatsed, kaitstud ja avalikud. |
Liideses kasutatakse ainult ühte spetsifikaatorit - Avalik. |
Millal kasutada liidest ja abstraktset klassi?
- Kasutage abstraktset klassi, kui alamklasside rühma jaoks on vaja malli määratleda
- Kasutage liidest, kui roll tuleb määratleda teiste klasside jaoks, olenemata nende klasside pärimispuust
Peab teadma liidese kohta fakte
- Java klass võib rakendada mitut Java liidest. On vajalik, et klass peab rakendama kõiki liidestes deklareeritud meetodeid.
- Klass peaks tühistama kõik liideses deklareeritud abstraktsed meetodid
- Kasutajaliides võimaldab objektile sõnumi saatmist ilma, millistesse klassidesse see kuulub.
- Klass peab pakkuma liideses deklareeritud meetodite funktsionaalsust.
- Kõik liidese meetodid on kaudselt avalikud ja abstraktsed
- Liidest ei saa instantsida
- Liidese viide võib osutada selle rakendusklassi objektidele
- Liides võib ulatuda ühest või mitmest liidesest. Klass võib laiendada ainult ühte klassi, kuid rakendada suvalist arvu liideseid
- Liides ei saa teist liidest rakendada. Vajadusel peab see laiendama teist liidest.
- Liidest, mis on deklareeritud teise liidese sees, nimetatakse pesastatud liideseks
- Deklaratsiooni esitamise ajal tuleb liidese muutuja lähtestada. Vastasel juhul viskab kompilaator vea.
- Klass ei saa Java-s rakendada kahte liidest, millel on sama nime, kuid erineva tagastustüübiga meetodid.
Kokkuvõte :
- Klass, mis liidest rakendab, peab pakkuma liideses deklareeritud meetodite funktsionaalsust
- Kõik liidese meetodid on kaudselt avalikud ja abstraktsed
- Liidest ei saa instantsida
- Liidese viide võib osutada selle rakendusklassi objektidele
- Liides võib ulatuda ühest või mitmest liidesest. Klass võib laiendada ainult ühte klassi, kuid rakendada suvalist arvu liideseid