Kas yra „Java“ sąsaja su pavyzdžiu

Turinys:

Anonim

Kas yra „Java“ sąsaja?

Java“ programavimo sąsaja apibrėžiama kaip abstraktus tipas, naudojamas nurodant klasės elgseną. Java sąsajoje yra statinės konstantos ir abstraktūs metodai. Klasė gali įdiegti kelias sąsajas. „Java“ sąsajos deklaruojamos naudojant sąsajos raktinį žodį. Visi sąsajos metodai yra netiesiogiai vieši ir abstraktūs.

Sąsajos deklaravimo sintaksė

interface {//methods}

Jei norite naudoti sąsają savo klasėje, po klasės pavadinimo pridėkite raktinį žodį „įgyvendina“, po kurio eina sąsajos pavadinimas.

Sąsajos diegimo pavyzdys

class Dog implements Pet
interface RidableAnimal extends Animal, Vehicle

Spustelėkite čia, jei vaizdo įrašas nepasiekiamas

Kodėl reikalinga sąsaja?

Norėdami geriau suprasti „Java“ sąsajos sąvoką, pamatykite pavyzdį. Klasėje „Media Player“ yra du poklasiai: CD grotuvas ir DVD grotuvas. Kiekvienas iš jų turi savo unikalų muzikos grojimo būdą.

Kita klasė „Combo drive“ paveldi tiek CD, tiek DVD diskus (žr. Paveikslėlį žemiau). Kurį žaidimo būdą jis turėtų paveldėti? Tai gali sukelti rimtų dizaino problemų. Taigi „Java“ neleidžia paveldėti kelis kartus.

Dabar paimkime dar vieną Šuns pavyzdį.

Tarkime, kad turite reikalavimą, kai klasė „šuo“ paveldi „gyvūnų“ ir „naminių gyvūnėlių“ klases (žr. Paveikslėlį žemiau). Bet jūs negalite pratęsti dviejų „Java“ klasių. Taigi, ką jūs darytumėte? Sprendimas yra sąsaja.

Sąsajos taisyklių knygelėje sakoma:

  • Sąsaja yra 100% abstrakčios klasės ir turi tik abstrakčius metodus.
  • Klasė gali įdiegti bet kokį sąsajų skaičių.

Klasės šuo gali išplėsti į klasę „Gyvūnas“ ir įdiegti sąsają kaip „Augintinis“.

„Java“ sąsajos pavyzdys:

1 žingsnis. Nukopijuokite šį kodą į redaktorių.

sąsaja Pet {viešo tuštumo testas ();}klasės šuo įgyvendina gyvūną {viešo niekingumo testas () {System.out.println („Įdiegtas sąsajos metodas“);}public static void main (String args []) {Augintinis p = naujas šuo ();p.testas ();}}

2 žingsnis) Išsaugokite, kompiliuokite ir paleiskite kodą. Stebėkite išvestį.

Skirtumas tarp klasės ir sąsajos

Klasė Sąsaja
Klasėje galite iš karto nustatyti kintamąjį ir sukurti objektą. Sąsajoje negalite iš karto nustatyti kintamojo ir sukurti objekto.
Klasėje gali būti konkretūs (su įgyvendinimu) metodai Sąsajoje negali būti konkrečių (su įgyvendinimu) metodų

Prie klasių naudojami prieigos specifikatoriai yra privatūs, saugomi ir vieši.

Sąsajoje naudojamas tik vienas specifikatorius - Viešas.

Kada naudoti sąsają ir abstrakčią klasę?

  • Naudokite abstrakčią klasę, kai reikia apibrėžti poklasių grupės šabloną
  • Naudokite sąsają, kai reikia apibrėžti kitų klasių vaidmenį, neatsižvelgiant į šių klasių paveldėjimo medį

Turi žinoti faktus apie sąsają

  • „Java“ klasė gali įdiegti kelias „Java“ sąsajas. Būtina, kad klasė turėtų įgyvendinti visus sąsajose deklaruotus metodus.
  • Klasė turėtų nepaisyti visų abstrakčių metodų, deklaruotų sąsajoje
  • Sąsaja leidžia siųsti pranešimą į objektą, neatsižvelgiant į tai, kurioms klasėms jis priklauso.
  • Klasė turi suteikti sąsajoje deklaruojamų metodų funkcionalumą.
  • Visi sąsajos metodai yra netiesiogiai vieši ir abstraktūs
  • Sąsajos negalima sukurti
  • Sąsajos nuoroda gali nurodyti jos įgyvendinimo klasių objektus
  • Sąsaja gali išplėsti iš vienos ar kelių sąsajų. Klasė gali išplėsti tik vieną klasę, tačiau įdiegti bet kokį sąsajų skaičių
  • Sąsaja negali įdiegti kitos sąsajos. Jei reikia, ji turi išplėsti kitą sąsają.
  • Sąsaja, kuri yra deklaruojama kitos sąsajos viduje, vadinama įdėta sąsaja
  • Deklaravimo metu sąsajos kintamasis turi būti inicializuotas. Priešingu atveju kompiliatorius sukels klaidą.
  • Klasė negali įdiegti dviejų „Java“ sąsajų, turinčių metodus tuo pačiu pavadinimu, bet skirtingu grąžinimo tipu.

Santrauka :

  • Sąsają diegianti klasė turi suteikti sąsajoje deklaruojamų metodų funkcionalumą
  • Visi sąsajos metodai yra netiesiogiai vieši ir abstraktūs
  • Sąsajos negalima sukurti
  • Sąsajos nuoroda gali nurodyti jos įgyvendinimo klasių objektus
  • Sąsaja gali išplėsti iš vienos ar kelių sąsajų. Klasė gali išplėsti tik vieną klasę, tačiau įdiegti bet kokį sąsajų skaičių