Skirtumas tarp „Java“ abstrakčios klasės ir sąsajos

Abstraktinė klasė ir sąsaja pirmiausia yra naudojami abstrakcijai, tačiau jie labai skiriasi. Jie abu yra pagrindinė „Java“ dalis, tačiau turi savo programas. Nors abu terminai gali būti sinonimai, jie negali būti vartojami pakaitomis.

Tarp šių dviejų ženkliai skiriasi. Nors sąsajos metodas pagal nutylėjimą yra abstraktus, abstraktus gali būti ir abstraktus, ir neabstraktas metodas. Na, nuo „Java 8“ sąsajos taip pat turi metodų įgyvendinimus ir „Java“ jie gali turėti ir statinius, ir numatytuosius metodus. Išsamiau išnagrinėsime skirtumą tarp šių dviejų.

Kas yra „Java“ abstrakčių klasė?

„Java“ abstrakčioji klasė yra klasė, kuri skelbiama abstrakčia - joje gali būti abstrakčių metodų arba jų nėra. Tai gana panaši į „Java“ sąsają, išskyrus tai, kad joje gali būti numatytasis metodo įgyvendinimas. Kaip ir objektinio programavimo atveju, „Java“ abstrakcija pasiekiama naudojant abstrakčias klases ir sąsajas. „Java“ versijoje abstrakcija reiškia, kad nesvarbios detalės slepiamos nuo vartotojo, kad būtų galima sutelkti dėmesį tik į esmines detales, kad padidintumėte efektyvumą ir sumažintumėte sudėtingumą. Raktinis žodis „abstraktus“ naudojamas abstrakčiai klasei sukurti prieš klasės raktinį žodį klasės deklaracijoje.

Abstrakčioje klasėje gali būti abstraktavimo metodų (metodai be kūno), bet jų nėra, tačiau, jei klasė turi bent vieną abstrakcijos metodą, ji turi būti paskelbta abstrakčia. Tačiau neabstraktūs metodai taip pat gali būti naudojami tik abstrakčioje klasėje, bet tik norint įgyvendinti numatytąjį elgesį. Priklausomai nuo matomumo lygio, abstrakčios klasės metodai gali turėti prieigos modifikatorius, tokius kaip privatūs, vieši, statiniai ir apsaugoti. Abstrakčios klasės negalima pagreitinti ir ji neužtikrina šimtaprocentinės abstrakcijos dėl to, kad gali turėti konkretų metodą.

Kas yra sąsaja?

Nors sąsaja atrodo kaip klasė, tačiau ne. Kadangi „Java“ nepalaiko kelių paveldėjimų, sąsaja kartais yra ideali klasių hierarchijai pagrįsti. Sąsaja yra labiau klasės projektas, kuris taip pat naudojamas abstrakcijai pasiekti „Java“. Joje yra abstraktūs metodai ir statinės konstantos. Paprastai tariant, sąsaja yra abstrakčių metodų, naudojamų norint apibūdinti elgesį, kurį klasė turi įgyvendinti, rinkinys. Skirtingai nuo abstrakčios klasės, sąsaja teikia visišką „Java“ abstrakciją. Tai gali būti ir metodai, ir kintamieji, kaip ir klasė, tačiau sąsajoje deklaruoti metodai pagal nutylėjimą yra abstraktūs.

Skirtumas tarp „Java“ abstrakčios klasės ir sąsajos

  1. „Keli paveldėjimai“ abstrakčios klasės ir sąsajos „Java“ - Nepaisant to, kad abstrakčiai klasei ir sąsajai pirmiausia naudojami abstrakcijos, jos labai skiriasi viena nuo kitos. Nors abstrakti klasė yra klasė, sąsaja yra sąsaja. Tai reiškia, kad nors sąsaja gali išplėsti tik kitą „Java“ sąsają, abstrakti klasė gali įgyvendinti kelis „Java“ palikimus. Na, „Java“ nepalaiko kelių paveldėjimų, tačiau galima įdiegti kelis palikimus „Java“.
  2. „Metodo tipas“, abstrakčios klasės ir sąsajos „Java“ - Antras didelis skirtumas tarp šių dviejų yra tas, kad nors sąsaja gali turėti tik abstrakčius metodus, abstrakti klasė gali turėti ir abstrakčius, ir ne abstrakčius metodus. Tačiau nuo „Java 8“ sąsajos taip pat gali būti numatytųjų ir statinių metodų.
  3. „Java“ abstrakčios klasės ir sąsajos „Prieigos modifikatoriai“ - Abstrakti klasė gali turėti viešų, privačių ir apsaugotų prieigos modifikatorių, tačiau sąsajos metodai yra netiesiogiai vieši ir abstraktūs. Negalite naudoti jokio kito prieigos modifikatoriaus su sąsajos metodais “.
  4. „Diegimas“ „Anotacija“ ir sąsaja „Java“ - Abstrakti klasė gali pateikti sąsajos įgyvendinimą. Kita vertus, sąsaja negali užtikrinti abstrakčios klasės įgyvendinimo.
  5. „Java“ abstrakčios klasės ir sąsajos „raktinis žodis“- Nors „abstraktus“ raktinis žodis yra naudojamas abstrakčiam klasės metodui paskelbti abstrakčiu, tačiau sąsajos yra visiškai kita istorija; jie gali turėti tik viešas, statiškas galutines konstantas ir metodo deklaracijas.
  6. „Java“ abstrakčios klasės ir sąsajos „naudojimas“ - Nors sąsaja yra ideali tipo deklaravimui, abstrakti klasė geriausiai tinka kodo pakartotiniam panaudojimui ir evoliucijos perspektyvai. Sąsaja atrodo kaip klasė, bet tai nėra klasė.
  7. „Java“ abstrakčios klasės ir sąsajos „patikimumas“- Kitas esminis skirtumas tarp abstrakčios klasės ir sąsajos yra tas, kad pirmoji yra šiek tiek greitesnė už antrąją, nes paprastai sąsajoje ieškoma prieš pradedant bet kokį perleistą metodą „Java“..
  8. „Galutiniai kintamieji“ „Java“ abstrakčios klasės ir sąsajos srityje - Sąsajoje deklaruoti kintamieji pagal nutylėjimą yra galutiniai, tuo tarpu abstrakčioje klasėje gali nebūti galutinių kintamųjų.

„Java“ abstrakti klasė ir sąsaja: palyginimų lentelė

Anotacija Sąsaja
Abstraktus raktinis žodis naudojamas abstrakčiai klasei sukurti ir gali būti naudojamas su metodais. Sąsajos raktinis žodis naudojamas sąsajai sukurti, tačiau jo negalima naudoti su metodais.
Klasė gali pratęsti tik vieną abstrakčią klasę. Klasė gali įgyvendinti daugiau nei vieną sąsają.
Abstrakčioji klasė gali turėti ir abstrakčius, ir neabstraktus metodus. Sąsaja gali turėti tik abstrakčius metodus.
Kintamieji pagal nutylėjimą nėra galutiniai. Jame gali būti ne galutinių kintamųjų. Kintamieji sąsajoje pagal nutylėjimą yra galutiniai.
Abstrakti klasė gali pateikti sąsajos įgyvendinimą. Sąsaja negali užtikrinti abstrakčios klasės įgyvendinimo.
Tai gali turėti metodus su įgyvendinimu. Jis teikia absoliučią abstrakciją ir negali būti įdiegtas metodas.
Jis gali turėti viešus, privačius, statinius ir apsaugotus prieigos modifikatorius. Metodai yra aiškiai vieši ir abstraktūs „Java“ sąsajoje.
Tai nepalaiko kelių paveldėjimų. Tai palaiko kelis palikimus.
Tai idealiai tinka pakartotiniam kodo naudojimui ir evoliucijos perspektyvai. Tai idealiai tinka tipo deklaracijai.

„Java“ abstrakčios klasės ir sąsajos suvestinės taškai

Abstrakcijai naudojama abstrakti klasė ir sąsaja; tačiau jie turi nemažą skirtumų dalį. Pagrindinis skirtumas tarp šių dviejų elementų yra abstrakcijos metodai. Nors pirmoji gali turėti arba neturėti abstrakčių metodų, pastaroji yra netiesiogiai abstrakti. Abstrakčioji klasė gali turėti ir abstrakčius, ir neabstraktus metodus. Kita vertus, sąsaja gali turėti tik abstrakčius metodus, todėl jie negali būti įdiegti, o tai paprasčiausiai reiškia, kad sąsaja negali turėti abstrakčių metodų. Negalima įvykdyti abstrakčios klasės, kuri draudžia kurti objektą. Kita vertus, sąsaja gali atrodyti kaip klasė, bet taip nėra.