Ang mga klase ng abstract at interface ay ang dalawang pangunahing mga bloke ng gusaling . Kahit na ang pareho ay pangunahing ginagamit para sa abstraction, ang mga ito ay ibang-iba sa bawat isa at hindi maaaring magamit nang palitan. Sa artikulong ito, alamin natin kung ano ang pagkakaiba sa pagitan ng abstract class at interface sa Java.
Ang mga paksang tinalakay sa artikulong ito ay ang mga sumusunod:
- Ano ang isang Abstract Class sa Java?
- Interface sa Java
- Abstract Class vs Interface
- Kailan gagamitin ang Abstract Class at Kailan gagamitin ang Interface?
Upang maunawaan ang mga pagkakaiba sa pagitan ng abstract class at interface sa , kailangan mong malaman kung ano ang isang mahirap unawain na klase at kung ano ang isang interface. Kaya, magsimula tayo sa pamamagitan ng pagtalakay kung ano ang mga iyon.
pagkakaiba sa pagitan ng mababaw na kopya at malalim na kopya sa java
Ano ang Abstract Class sa Java?
Sa anumang wika ng programa, abstraction nangangahulugang itinatago ang mga walang kaugnayang detalye mula sa gumagamit upang ituon lamang ang mga mahahalagang detalye upang madagdagan ang kahusayan sa gayon mabawasan ang pagiging kumplikado. Sa Java, nakakamit ang abstraction gamit ang abstract na mga klase . Nakukuha ng isang abstract na klase ang mga karaniwang katangian ng subclass at maaaring mayroon o hindi maaaring maglaman ng anumang abstract na pamamaraan. Hindi ito maaring palitan ngunit maaari lamang gamitin bilang isang superclass ng mga subclass nito. Narito ang isang halimbawa ng programa na nagpapakita ng mahirap unawain na klase:
Tandaan: Isang abstract na pamamaraan , ay isang pamamaraan na hindi ipinatupad sa lugar at nagdadagdaghindi kumpleto sa klase .
package MyPackage // abstract class abstract class Animal {String AnimalName = '' Animal (String name) {this.AnimalName = name} // ideklara ang mga hindi abstract na pamamaraan // mayroon itong default na pagpapatupad sa publiko na walang bisa ng BasicInfo (Mga detalye ng String) {System. out.println (ito.AnimalName + '' + mga detalye)} // abstract na mga pamamaraan na kung saan ay ipapatupad ng kanyang subclass (es) abstract public void habitat () abstract public void respiration ()} class Terrestrial extends Animal {// konstruktor na Terrestrial (Pangalan ng String) {super (pangalan)} @Orride public void habitat () {System.out.println ('leave on land and')} @Override public void respiration () {System.out.println ('respire sa pamamagitan ng baga o trachea. ')}} klase ng Aquatic ay nagpapalawak ng Animal {// konstruktor na Tubig (pangalan ng String) {super (pangalan)} @Override public void habitat () {System.out.println (' Umalis ito sa tubig at ') } @Override public void respiration () {System.out.println ('respire through gills or their skin.')}} Class AbstractClassDemo {public static voi d main (String [] args) {// paglikha ng Object ng Terrestrial class // at paggamit ng sangguniang klase ng Animal. Animal object1 = bagong Terrestrial ('Mga Tao') object1.BasicInfo ('ay mga terrestrial na nilalang, sila') object1.habitat () object1.respiration () System.out.println ('' // paglikha ng Mga Bagay ng klase ng bilog na hayop object2 = bagong Aquatic ('Mga Isda') object2.BasicInfo ('ay mga aqautic na nilalang, sila') object2.habitat () object2.respiration ()}}
Paglabas
Ang mga tao ay mga terrestrial na nilalang, umalis sila sa lupa at huminga sa pamamagitan ng baga o trachea. Ang mga isda ay mga aqautic na nilalang, sila ay Nag-iiwan sa tubig at huminga sa pamamagitan ng mga hasang o kanilang balat.
Ang BasicInfo () ay isang pamamaraang ibinahagi ng Terestrial at Nabubuhay sa tubig mga klase. Mula noon Klase ng hayop hindi mapasimulan, lumilikha kami ng mga object ng Terestrial at Nabubuhay sa tubig mga klase para sa layunin ng programa. Susunod, mayroon kaming mga interface.
Interface sa Java
Isa pang paraan ng pagkamit abstraction sa Java ay sa pamamagitan ng paggamit mga interface .Ang isang interface ay isang koleksyon ng mga abstract na pamamaraan, wala itong anumang kongkreto , hindi katulad ng isang mahirap unawain na klase. Ngunit hindi katulad ng abstract class, ang isang interface ay nagbibigay ng buong abstraction sa Java. Maaari itong magkaroon ng parehong pamamaraan at variable tulad ng isang klase. Gayunpaman, ang mga pamamaraan na idineklara sa isang interface ay abstract bilang default.Narito ang isang nagpapakita ng mahirap unawain na klase:
pakete ng MyPackage interface Mga Hayop {// abstract na mga pamamaraan na walang bisa na tirahan () walang bisa na paghinga ()} klase TerrestrialA nagpapatupad ng Mga Hayop {String AnimalName = '' // konstruktor TerrestrialA (String name) {this.AnimalName = name} @Override public void habitat () {System.out.println (ito.AnimalName + 'umalis sa lupa at')} @Override public void respiration () {System.out.println ('respire through lungs or trachea.')}} Class AquaticA nagpapatupad ng Mga Hayop {String AnimalName = '' // konstruktor AquaticA (pangalan ng String) {ito. AnimalName = pangalan} @Override pampublikong walang bisa na tirahan () {System.out.println (ito. AnimalName + 'umalis sa tubig at')} @Orride pampublikong walang bisa na paghinga () {System.out.println ('paggalang sa pamamagitan ng gills o kanilang balat.')}} Klase JavaInterfaceDemo {public static void main (String [] args) {// paglikha ng Bagay ng klase ng Terrestrial // at paggamit ng sangguniang klase ng hayop . Mga hayop object1 = bagong TerrestrialA ('Mga Tao') object1.habitat () object1.respiration () System.out.println ('' // paglikha ng Mga Bagay ng klase ng bilog Mga hayop na object2 = bagong AquaticA ('Mga Isda') object2.habitat () object2.respiration ()}}
Paglabas
Ang mga tao ay umalis sa lupa at gumalang sa pamamagitan ng baga o trachea. Ang mga isda ay umalis sa tubig at gumalang sa pamamagitan ng gills o kanilang balat.
Kung wala kang anumang karaniwang code sa pagitan ng iyong mga klase , pagkatapos ay maaari kang pumunta para sa interface. Ang isang interface ay mas katulad ng isang blueprint ng isang klase dahil wala itong anumang mga hindi abstract na pamamaraan.
Mula sa nilalaman sa itaas, maaaring napansin mo ang pangunahing pagkakaiba sa pagitan ng abstract class at interface sa . Alin ang, hindi katulad ng abstract na klase, ang isang interface ay nagbibigay ng buong abstraction sa Java. Ngayon sige at ilista natin ang iba pang mga pagkakaiba.
Abstract Class vs Interface
Inililista ng talahanayan sa ibaba ang mga pangunahing pagkakaiba sa pagitan ng abstract class at interface.
Parameter | Abstract Class | Interface |
Pagpapatupad ng Default na Pamamaraan | Maaari itong magkaroon ng default na pagpapatupad ng pamamaraan | Ang mga interface ay nagbibigay ng purong abstraction at hindi maaaring magkaroon ng pagpapatupad sa lahat |
Mga variable | Maaari itong maglaman ng mga hindi pangwakas na variable. | Ang mga variable na idineklara sa isang interface ay sa pamamagitan ng default na pangwakas |
Ginamit na Keyword | Maaaring mapalawak ang isang abstract na klase gamit ang keyword na 'umaabot | Dapat ipatupad ang interface gamit ang mga keyword ïmplement |
Mga Modifier ng Pag-access | Maaarimagkaroon ng pampubliko, protektado, pribado at default na modifier | Ang mga pamamaraan ng interface ay sa pamamagitan ng default na pampubliko. hindi ka maaaring gumamit ng anumang iba pang access modifier kasama nito |
Bilis ng Pagpapatupad | Mas mabilis ito kaysa sa interface | Ang isang Interface ay medyo mabagal at nangangailangan ng labis na pagnanasa |
Karaniwang Klase | Maaari itong mapalawak lamang sa isang mahirap unawain na klase | Maaaring magpatupad ng maraming mga interface |
Mga tagapagbuo | Ang isang mahirap unawain na klase ay maaaring magkaroon ng mga tagapagbuo | Ang isang interface ay hindi maaaring magkaroon ng mga tagapagbuo |
Maramihang Mana | Ang isang abstract na klase ay maaaring magpalawak ng isa pang klase at maaaring magpatupad ng maraming mga Java interface | Ang interface ay maaaring magpalawak ng isa pang Java interface lamang |
Kaya, ngayon ikaw ang pangunahing mga pagkakaiba sa pagitan ng abstract class at interface sa Java. Ngunit, paano ka magpapasya kung kailan gagamitin alin sa dalawang ito?
Kailan gagamitin ang Abstract Class at Kailan gagamitin ang Interface?
Isaalang-alang ang paggamit ng mga abstract na klase sa mga sumusunod na kaso:
- Kung mayroon kang ilang mga kaugnay na klase na kailangang ibahagi ang parehong mga linya ng code
- Kapag nais mong tukuyin ang mga di-static o hindi pangwakas na larangan
- Pag meronmga pamamaraan o bukido nangangailangan mga modifier ng pag-access maliban sa publiko (tulad ng protektado at pribado)
Isaalang-alang ang paggamit ng mga interface sa mga sumusunod na kaso:
- Kapag nais mong makamit puro abstraction
- Kung nais mong magtrabaho maramihang , ibig sabihin,magpatupad ng higit sa isang interface
- Kung nais mong tukuyin ang pag-uugali ng isang partikular na uri ng data, ngunit hindi nag-aalala tungkol sa kung sino ang nagpapatupad ng pag-uugali na ito.
Dinadala tayo nito sa pagtatapos ng artikulong ito. Saklaw ko ang isa sa pinakamadalas tinatanong na mga katanungan sa Java sa Panayam, na kung saan ay ang pagkakaiba sa pagitan ng abstract class at interface sa Java.
Tiyaking nagsasanay ka hangga't maaari at ibalik ang iyong karanasan.
Suriin ang ni Edureka, isang pinagkakatiwalaang kumpanya sa pag-aaral sa online na may isang network na higit sa 250,000 nasiyahan na mga nag-aaral na kumalat sa buong mundo. Narito kami upang matulungan ka sa bawat hakbang sa iyong paglalakbay, para sa pagiging isang bukod sa mga katanungang ito sa panayam sa java, nakakakuha kami ng isang kurikulum na idinisenyo para sa mga mag-aaral at propesyonal na nais na maging isang Java Developer.
May tanong ba sa amin? Mangyaring banggitin ito sa seksyon ng mga komento ng 'java Map interface' na ito artikulo at babalikan ka namin sa lalong madaling panahon.