Abstract Class at Interface sa Java

Anonim

Ang abstract class at interface parehong ginagamit para sa abstraction, gayunpaman ang mga ito ay ibang-iba sa bawat isa. Ang parehong mga pangunahing bahagi ng Java ngunit may sariling paggamit ng application. Habang ang parehong mga tuntunin ay maaaring magkasingkahulugan sa bawat isa, hindi nila maaaring gamitin nang magkakaiba.

May mga makabuluhang pagkakaiba sa pagitan ng dalawa. Habang ang isang paraan ng interface ay abstract sa pamamagitan ng default, isang abstract ay maaaring naglalaman ng parehong mga abstract at di-abstract na mga pamamaraan. Buweno, dahil sa Java 8, ang mga interface ay mayroon ding mga pagpapatupad ng pamamaraan at maaari silang magkaroon ng parehong static at default na mga pamamaraan sa Java. Pag-aralan natin ang pagkakaiba sa pagitan ng dalawa nang detalyado.

Ano ang Abstract Class sa Java?

Ang isang abstract klase sa Java ay isang klase na ipinahayag abstract - ito ay maaaring o hindi maaaring maglaman ng abstract pamamaraan. Ito ay lubos na katulad sa isang interface ng Java maliban sa katotohanang ito ay maaaring maglaman ng default na paraan ng pagpapatupad. Tulad ng sa object-oriented programming, ang abstraction sa Java ay nakamit gamit ang abstract na mga klase at mga interface. Sa Java, ang ibig sabihin ng abstraction ay pagtatago ng mga hindi kaugnay na detalye mula sa gumagamit na mag-focus lamang sa mga mahahalagang detalye upang madagdagan ang kahusayan sa gayon pagbabawas ng pagiging kumplikado. Ang keyword na "abstract" ay ginagamit upang lumikha ng isang abstract class bago ang klase ng keyword sa klase deklarasyon.

Ang isang abstract na klase ay maaaring o hindi maaaring maglaman ng mga pamamaraan ng abstraction (mga pamamaraan na walang katawan), ngunit kung ang isang klase ay may hindi bababa sa isang paraan ng abstraction, dapat itong maipahayag na abstract. Gayunpaman, ang mga di-abstract na mga pamamaraan ay maaari lamang magamit sa isang abstract na klase, ngunit lamang upang ipatupad ang default na pag-uugali. Ang mga pamamaraan sa isang abstract klase ay maaaring magkaroon ng mga modifier ng access tulad ng pribado, pampubliko, static at protektado, depende sa antas ng kakayahang makita. Ang isang abstract klase ay hindi maaaring instantiated at hindi ito nagbibigay ng 100 porsiyento abstraction dahil sa ang katunayan na ito ay maaaring magkaroon ng kongkreto paraan.

Ano ang isang Interface?

Isang interface kahit na mukhang isang klase, ito ay hindi. Dahil ang Java ay hindi sumusuporta sa maramihang mga inheritance, isang interface kung minsan ay perpekto para sa pagbibigay ng base para sa hierarchy ng klase. Ang isang interface ay higit pa sa isang blueprint ng isang klase na ginagamit din upang makamit ang abstraction sa Java. Naglalaman ito ng mga abstract na pamamaraan at static constants. Sa simpleng mga termino, ang isang interface ay isang koleksyon ng mga abstract na pamamaraan na ginagamit upang tukuyin ang isang pag-uugali na ipapatupad ng klase. Hindi tulad ng abstract klase, isang interface ay nagbibigay ng buong abstraction sa Java. Maaari itong magkaroon ng parehong mga pamamaraan at mga variable tulad ng isang klase, gayunpaman ang mga pamamaraan na ipinahayag sa interface ay abstract sa pamamagitan ng default.

Pagkakaiba sa pagitan ng Abstract Class at Interface sa Java

  1. "Multiple Inheritance" ng Abstract Class at Interface sa Java - Sa kabila ng katotohanan na ang parehong mahirap unawain klase at interface ay pangunahing ginagamit para sa abstraction, ang mga ito ay lubos na naiiba mula sa bawat isa. Habang ang isang abstract klase ay isang klase, isang interface ay isang interface. Ito ay nangangahulugan habang ang isang interface ay maaari lamang palawigin ang isa pang interface ng Java, ang isang abstract na klase ay maaaring magpatupad ng maramihang mga inheritance sa Java. Well, Java ay hindi sumusuporta sa maramihang mga inheritances ngunit maaari isa ipatupad ang maramihang mga inheritances sa Java.
  2. "Uri ng Paraan" ng Abstract Class at Interface sa Java - Ang ikalawang pangunahing pagkakaiba sa pagitan ng dalawang ay na habang ang isang interface ay maaari lamang magkaroon ng abstract na mga pamamaraan, ang isang mahirap unawain klase ay maaaring magkaroon ng parehong abstract at di-abstract na mga pamamaraan. Gayunpaman, dahil sa Java 8, ang isang interface ay maaaring magkaroon ng default at static na mga pamamaraan masyadong.
  3. "Access Modifiers" ng Abstract Class and Interface sa Java - Ang isang abstract klase ay maaaring magkaroon ng pampubliko, pribado at protektado ng mga modifier ng pag-access, gayunpaman ang mga paraan ng isang interface ay lubos na pampubliko at abstract. Hindi ka maaaring gumamit ng anumang iba pang access modifier na may mga paraan ng interface '.
  4. "Pagpapatupad" ng Abstract Class at Interface sa Java - Ang isang abstract klase ay maaaring magbigay ng pagpapatupad ng isang interface. Ang isang interface, sa kabilang banda, ay hindi maaaring magbigay ng pagpapatupad ng isang abstract klase.
  5. "Keyword" ng Abstract Class at Interface sa Java- Habang ang "abstract" keyword ay ginagamit upang ipahayag ang isang abstract klase paraan bilang abstract, gayunpaman, ang mga interface ay ganap na isang iba't ibang mga kuwento; maaari lamang silang magkaroon ng pampublikong, static final constants at deklarasyon ng paraan.
  6. "Gamitin" ng Abstract Class at Interface sa Java - Habang ang isang interface ay perpekto para sa uri ng deklarasyon, isang abstract klase ay pinaka-angkop para sa code reusability at pananaw ng ebolusyon. Isang interface ang mukhang isang klase, ngunit hindi ito isang klase.
  7. "Kahusayan" ng Abstract Class at Interface sa Java- Ang isa pang pangunahing pagkakaiba sa pagitan ng isang abstract class at isang interface ay na ang dating ay isang bit mas mabilis kaysa sa huli dahil ang isang paghahanap ay karaniwang kasangkot sa isang interface bago ang anumang na-override na paraan ay tinatawag na sa Java.
  8. "Final Variables" ng Abstract Class at Interface sa Java - Ang mga variable na ipinahayag sa isang interface ay pangwakas na sa pamamagitan ng default, habang ang isang abstract na klase ay maaaring o hindi maaaring maglaman ng mga di-huling mga variable.

Abstract Class vs Interface sa Java: Paghahambing Table

Abstract Class Interface
Ang abstract keyword ay ginagamit upang lumikha ng isang abstract class at maaari itong magamit sa mga pamamaraan. Ang keyword ng interface ay ginagamit upang lumikha ng isang interface ngunit hindi ito maaaring gamitin sa mga pamamaraan.
Ang isang klase ay maaaring mag-extend lamang ng isang abstract class. Ang isang klase ay maaaring magpatupad ng higit sa isang interface.
Ang isang abstract class ay maaaring magkaroon ng parehong abstract at di-abstract pamamaraan. Ang isang interface ay maaaring magkaroon lamang ng mga abstract na pamamaraan.
Ang mga variable ay hindi huling bilang default. Maaaring naglalaman ito ng mga di-huling mga variable. Ang mga variable ay huling bilang default sa isang interface.
Ang isang abstract class ay maaaring magbigay ng pagpapatupad ng isang interface. Ang isang interface ay hindi maaaring magbigay ng pagpapatupad ng isang mahirap unawain klase.
Maaari itong magkaroon ng mga pamamaraan sa pagpapatupad. Nagbibigay ito ng absolute abstraction at hindi maaaring magkaroon ng mga pagpapatupad ng paraan.
Maaari itong magkaroon ng mga pampublikong, pribado, static at protektado ng mga modifier ng access. Ang mga pamamaraan ay lubos na pampubliko at abstract sa Java interface.
Hindi nito sinusuportahan ang maramihang mga mana. Sinusuportahan nito ang maramihang pamana.
Perpekto ito para sa muling paggamit ng code at pananaw ng ebolusyon. Perpekto para sa deklarasyon ng Uri.

Buod ng mga punto sa Abstract Class at Interface sa Java

Parehong abstract klase at interface ay ginagamit para sa abstraction; gayunman, mayroon silang makatarungang bahagi ng mga pagkakaiba. Ang pangunahing pagkakaiba sa pagitan ng dalawa ay hinihimok ng mga pamamaraan ng abstraction. Habang ang dating ay maaaring o hindi maaaring magkaroon ng abstract na mga pamamaraan, ang huli ay ganap na abstract. Ang isang abstract class ay maaaring magkaroon ng parehong abstract at di-abstract pamamaraan. Ang isang interface, sa kabilang banda, ay maaari lamang magkaroon ng abstract na mga pamamaraan, kaya hindi sila maaaring magkaroon ng pagpapatupad, na nangangahulugang ang isang interface ay hindi maaaring magkaroon ng di-abstract na mga pamamaraan. Ang isang abstract klase ay hindi maaaring instantiated na nagbabawal sa paglikha ng isang bagay. Ang isang interface, sa kabilang banda, ay maaaring magmukhang isang klase, ngunit hindi.