Mitä eroa on abstraktin luokan ja Java-käyttöliittymän välillä?



Tämä artikkeli auttaa sinua ymmärtämään abstraktin luokan ja Java-käyttöliittymän välisen tärkeimmän eron esimerkkiohjelman avulla.

Abstraktit luokat ja rajapinnat ovat kaksi tärkeintä rakennuspalikkaan . Vaikka molempia käytetään ensisijaisesti abstraktioon, ne ovat hyvin erilaisia ​​toisistaan ​​eikä niitä voida käyttää keskenään. Tässä artikkelissa selvitetään, mikä on ero abstraktin luokan ja Java-käyttöliittymän välillä.

Tässä artikkelissa käsitellään seuraavia aiheita:





Ymmärtää erot abstraktin luokan ja käyttöliittymän välillä , sinun on tiedettävä, mikä abstrakti luokka on ja mikä on käyttöliittymä. Joten aloitetaan keskustelemalla mitä ne ovat.

Mikä on Java-abstrakti luokka?

Millä tahansa ohjelmointikielellä, abstraktio tarkoittaa merkityksettömien yksityiskohtien piilottamista käyttäjältä keskittymään vain olennaisiin yksityiskohtiin tehokkuuden lisäämiseksi ja siten monimutkaisuuden vähentämiseksi. Java-tilassa abstraktio saavutetaan käyttämällä abstraktit luokat . Abstrakti luokka sieppaa alaluokkien yleiset ominaisuudet ja voi sisältää tai olla sisältämättä abstraktia menetelmää. Sitä ei voida instantisoida, mutta sitä voidaan käyttää vain yläluokkana sen alaluokkien kautta. Tässä on esimerkkiohjelmasta, joka osoittaa abstraktin luokan:



Huomautus: An abstrakti menetelmä , on menetelmä, jota ei ole otettu käyttöön ja lisääepätäydellisyys luokassa .

package MyPackage // abstrakti luokka abstrakti luokka Animal {String AnimalName = '' Animal (String name) {this.AnimalName = name} // julista ei-abstraktit menetelmät // sillä on oletusarvoinen julkinen void BasicInfo (String details) {System. out.println (this.AnimalName + '' + yksityiskohdat)} // abstraktit menetelmät, jotka // toteuttavat sen alaluokka (t) abstrakti public void elinympäristö () abstrakti public void hengitys ()} -luokka Terrestrial extends Animal {// rakentaja Terrestrial (merkkijono) {super (nimi)} @Override public void habitat () {System.out.println ('leave on land and')} @Override public void hengitys () {System.out.println ('respire keuhkojen tai henkitorven kautta. ')}} luokka Aquatic ulottuu eläin {// konstruktori Aquatic (merkkijono) {super (nimi)} @Override public void habitat () {System.out.println (' Se lähtee veteen ja ') } @Override public void respiration () {System.out.println ('hengitä kidusten tai ihon läpi.')}} Class AbstractClassDemo {public static voi d main (String [] args) {// luodaan maanpäällisen luokan objekti // ja käytetään eläinluokan viitteitä. Eläinobjekti1 = uusi maanpäällinen ('Ihmiset') esine1.BasicInfo ('ovat maanpäällisiä olentoja, ne') object1.habitat () object1.respiration () System.out.println ('') // luomalla ympyräluokan Animal objektit object2 = uusi vesieliö ('Fishes') object2.BasicInfo ('ovat vesieliöitä, he') object2.habitat () object2.hengitys ()}}

Tuotos

Ihmiset ovat maanpäällisiä olentoja, jotka lähtevät maalta ja hengittävät keuhkojen tai henkitorven kautta. Kalat ovat vesieliöitä, ne jättävät veteen ja hengittävät kidusten tai ihon kautta.

BasicInfo () on jaettu menetelmä Maanpäällinen ja Vesi luokat. Siitä asti kun Eläinluokka ei voida käynnistää, luomme kohteen Maanpäällinen ja Vesi luokat ohjelmointia varten. Seuraavaksi meillä on rajapinnat.



Käyttöliittymä Java-käyttöjärjestelmässä

Toinen tapa saavuttaa abstraktio Java on käyttämällä rajapinnat .Käyttöliittymä on kokoelma abstrakteja menetelmiä, sillä ei ole mitään konkreettista , toisin kuin abstrakti luokka. Mutta toisin kuin abstrakti luokka, käyttöliittymä tarjoaa täydellisen abstraktion Java-muodossa. Sillä voi olla sekä menetelmiä että muuttujia aivan kuten luokassa. Rajapinnassa ilmoitetut menetelmät ovat kuitenkin oletusarvoisesti abstrakteja.Tässä on osoittaa abstraktin luokan:

paketti MyPackage-käyttöliittymä Eläimet {// abstraktit menetelmät void elinympäristö () void respiration ()} -luokka TerrestrialA toteuttaa eläimet {String AnimalName = '' // konstruktori TerrestrialA (String name) {this.AnimalName = name} @Override public void habitat () {System.out.println (this.AnimalName + 'leave on land and')} @Override public void hengitys () {System.out.println ('hengitä keuhkojen tai henkitorven kautta.')}} -Luokka AquaticA toteuttaa eläimiä {String AnimalName = '' // rakentaja AquaticA (merkkijonon nimi) {this.AnimalName = name} @Override public void habitat () {System.out.println (this.AnimalName + 'jätä veteen ja')} @Override public void hengitys () {System.out.println ('hengitä kidusten tai ihon läpi.')}} Luokka JavaInterfaceDemo {public static void main (String [] args) {// luo maanpäällisen luokan objektin // ja käyttää eläinluokan viitteitä . Eläimet object1 = new TerrestrialA ('Ihmiset') object1.habitat () object1.respiration () System.out.println ('') // ympyräluokan Objects luominen Animals object2 = uusi AquaticA ('Fishes') object2.habitat () objekti2.hengitys ()}}

Tuotos

Ihmiset lähtevät maalta ja hengittävät keuhkojen tai henkitorven kautta. Kalat lähtevät vedestä ja hengittävät kidusten tai ihon kautta.

Jos sinulla ei ole yhteistä koodia luokat , sitten voit siirtyä käyttöliittymään. Käyttöliittymä on enemmän kuin luokan piirustus, koska sillä ei ole ei-abstrakteja menetelmiä.

Yllä olevasta sisällöstä saatat huomata keskeisen eron abstraktin luokan ja käyttöliittymän välillä . Mikä on, toisin kuin abstrakti luokka, käyttöliittymä tarjoaa täyden abstraktio Java-kielellä. Mennään nyt eteenpäin ja luetellaan muut erot.

typecast kaksinkertainen int java

Tiivistelmä luokka vs käyttöliittymä

Alla olevassa taulukossa luetellaan abstraktin luokan ja käyttöliittymän tärkeimmät erot.

Parametri Abstrakti luokka Käyttöliittymä

Oletusmenetelmän toteutus

Sillä voi olla oletusmenetelmän toteutus

Liitännät tarjoavat puhtaan abstraktion, eikä niitä voida toteuttaa lainkaan

Muuttujat

Se voi sisältää ei-lopullisia muuttujia.

Liitännässä ilmoitetut muuttujat ovat oletusarvoisesti lopullisia

Avainsana käytetty

Abstraktia luokkaa voidaan laajentaa käyttämällä avainsanaa ”jatkuu

Käyttöliittymä tulisi toteuttaa käyttämällä avainsanasovelluksia

Pääsyn muokkaajat

Voisinulla on julkinen, suojattu, yksityinen ja oletusmuunnin

Liitäntämenetelmät ovat oletusarvoisesti julkisia. Et voi käyttää mitään muuta pääsymuuttujaa sen kanssa

java miten lopettaa ohjelma

Toteutuksen nopeus

Se on nopeampi kuin käyttöliittymä

Liitäntä on jonkin verran hitaampi ja vaatii ylimääräistä suuntaamista

Normaali luokka

Se voi laajentaa vain yhtä abstraktia luokkaa

Voi toteuttaa useita rajapintoja

Rakentajat

Abstraktilla luokalla voi olla rakentajia

Liitännällä ei voi olla rakentajia

Moninkertainen perintö

Abstrakti luokka voi laajentaa toista luokkaa ja toteuttaa useita Java-rajapintoja

Käyttöliittymä voi laajentaa vain toista Java-käyttöliittymää

No, nyt olet tärkeimmät erot abstraktin luokan ja Java-käyttöliittymän välillä. Mutta miten päätät, milloin käyttää kumpaakin näistä kahdesta?

Milloin käytetään abstraktia luokkaa ja milloin käyttöliittymää?

Harkitse abstraktien luokkien käyttöä seuraavissa tapauksissa:

  • Jos sinulla on joitain aiheeseen liittyviä luokkia, joiden on jaettava samat koodirivit
  • Kun haluat määrittää ei-staattiset tai ei-lopulliset kentät
  • Kun niitä onmenetelmiä tai kenttiätai vaatia pääsyn muokkaajat muu kuin julkinen (kuten suojattu ja yksityinen)

Harkitse käyttöliittymien käyttöä seuraavissa tapauksissa:

  • Kun haluat saavuttaa puhdas abstraktio
  • Jos haluat palkata useita elitoteuttaa useampi kuin yksi käyttöliittymä
  • Kun haluat määrittää tietyn tietotyypin käyttäytymisen, mutta et ole huolissasi siitä, kuka toteuttaa sen käyttäytymisen.

Tämä tuo meidät tämän artikkelin loppuun. Olen käsitellyt haastattelussa yhtä yleisimmin kysyttyjä Java-kysymyksiä, mikä on ero abstraktin luokan ja Java-käyttöliittymän välillä.

Varmista, että harjoittelet mahdollisimman paljon ja palauta kokemuksesi.

Katso Edureka, luotettava verkko-oppimisyritys, jolla on yli 250 000 tyytyväisen oppijan verkosto, joka levisi ympäri maailmaa. Olemme täällä auttaaksemme sinua matkasi jokaisessa vaiheessa, jotta tulemme tämän java-haastattelukysymyksen lisäksi, keksimme opetussuunnitelman, joka on tarkoitettu opiskelijoille ja ammattilaisille, jotka haluavat olla Java-kehittäjiä.

Onko sinulla kysymys meille? Mainitse se tämän java Map -käyttöliittymän kommenttiosassa artikkeli ja palaamme sinuun mahdollisimman pian.