Saskarne un abstrakta klase Java: kāda ir atšķirība?

Kas ir saskarne?

Interfeiss ir plāns, ko var izmantot klases ieviešanai. Saskarne nesatur nekādas konkrētas metodes (metodes, kurām ir kods). Visas saskarnes metodes ir abstraktas.

Nevar izveidot interfeisu. Tomēr klases, kurās tiek ieviestas saskarnes, var īsināt. Saskarnes nekad nesatur instanču mainīgos, taču tajos var būt publiski statiski galīgie mainīgie (t.i., nemainīgi klases mainīgie)

Kas ir abstraktā klase?

Klases, kuras deklarācijā ir abstrakts atslēgvārds, sauc par abstraktu klasi. Abstraktām klasēm jābūt vismaz vienai abstraktai metodei. , t.i., metodes bez ķermeņa. Tam var būt vairākas konkrētas metodes.

Abstraktās nodarbības ļauj izveidot rasējumus konkrētām klasēm. Bet mantotajai klasei vajadzētu ieviest abstrakto metodi.

Abstraktās nodarbības nevar parādīt.

Svarīgi interfeisu izmantošanas iemesli

  • Saskarnes tiek izmantotas, lai sasniegtu abstrakciju.
  • Izstrādāts, lai atbalstītu dinamisku metožu izšķirtspēju izpildes laikā
  • Tas palīdz sasniegt vaļīgu savienojumu.
  • Ļauj atdalīt metodes definīciju no mantojuma hierarhijas

Svarīgi iemesli abstraktās klases izmantošanai

  • Abstraktās klases piedāvā noklusējuma funkcionalitāti apakšklasēm.
  • Nodrošina veidni turpmākām īpašām nodarbībām
  • Palīdz definēt kopīgu saskarni tās apakšklasēm
  • Abstrakta klase ļauj atkārtoti izmantot kodu.

Interfeiss vs. Abstrakta klase

Abstrakta klase ļauj jums izveidot funkcionalitāti, ko apakšklases var ieviest vai ignorēt, turpretī saskarne ļauj jums norādīt funkcionalitāti, bet ne to ieviest. Klase var paplašināt tikai vienu abstraktu klasi, savukārt klase var īstenot vairākas saskarnes.

Parametri Saskarne Abstrakta klase
ĀtrumsLēnsĀtri
Vairāki mantojumiIeviest vairākas saskarnesTikai viena abstrakta klase
StruktūraAbstraktās metodesAbstraktas un konkrētas metodes
Kad lietotNākotnes uzlabošanaLai izvairītos no neatkarības
Mantojums/ ĪstenošanaKlase var īstenot vairākas saskarnesKlase var mantot tikai vienu abstraktu klasi
Noklusējuma ieviešanaPievienojot interfeisam jaunas lietas, ir murgs atrast visus ieviesējus un ieviest nesen definētās lietas.Abstraktās klases gadījumā varat izmantot noklusējuma ieviešanas priekšrocības.
Piekļuves modifikatoriSaskarnei nav piekļuves modifikatoru. Viss, kas definēts saskarnē, tiek pieņemts kā publisks pārveidotājs.Abstraktajai klasei var būt piekļuves modifikators.
Kad lietotLabāk ir izmantot saskarni, ja dažādām ieviešanām ir tikai metodes paraksts. Vērtību tipu polimorfā hierarhija.Tas būtu jāizmanto, ja dažādām viena veida ieviešanām ir kopīga uzvedība.
Datu laukisaskarne nevar saturēt datu laukus.klasei var būt datu lauki.
Vairāku mantojumu noklusējumsKlase var īstenot daudzas saskarnes.Klase manto tikai vienu abstraktu klasi.
ĪstenošanaSaskarne ir abstrakta, tāpēc tā nevar nodrošināt nekādu kodu.Abstrakta klase var dot pilnu noklusējuma kodu, kas būtu jāaizstāj.
Piekļuves modifikatoru izmantošanaJūs nevarat izmantot piekļuves modifikatorus metodei, rekvizītiem utt.Varat izmantot abstraktu klasi, kurā ir piekļuves modifikatori.
LietošanaSaskarnes palīdz definēt klases perifērās spējas.Abstrakta klase definē klases identitāti.
Noteikti laukiLaukus nevar definētAbstrakta klase ļauj definēt gan laukus, gan konstantes
MantojumsSaskarne var mantot vairākas saskarnes, bet nevar mantot klasi.Abstrakta klase var mantot klasi un vairākas saskarnes.
Konstruktori vai iznīcinātājiSaskarne nevar deklarēt konstruktorus vai iznīcinātājus.Abstrakta klase var deklarēt konstruktorus un iznīcinātājus.
Pagarinājumu ierobežojumsTas var paplašināt jebkuru saskarņu skaitu.Tas vienlaikus var paplašināt tikai vienu klasi vai vienu abstraktu klasi.
Abstrakts atslēgvārdsAbstrakta interfeisa atslēgvārdā nav obligāts, lai deklarētu metodi kā abstraktu.Abstraktu klasē abstraktais atslēgvārds ir obligāts, lai deklarētu metodi kā abstraktu.
Klases veidsSaskarnei var būt tikai publiskas abstraktas metodes.Abstraktai klasei ir aizsargātas un publiskas abstraktas metodes.

Interfeisa un abstraktās klases parauga kods Java

Tālāk ir sniegts koda paraugs, lai izveidotu Java saskarni un abstraktu klasi

Interfeisa sintakse

 interface name{ //methods }

Java saskarnes piemērs:

 interface Pet { public void test(); } class Dog implements Pet { public void test() { System.out.println('Interface Method Implemented'); } public static void main(String args[]) { Pet p = new Dog(); p.test(); } } 

Abstrakta klases sintakse

abstract class name{ // code }

Abstrakts klases piemērs:

 abstract class Shape { int b = 20; abstract public void calculateArea(); } public class Rectangle extends Shape { public static void main(String args[]) { Rectangle obj = new Rectangle(); obj.b = 200; obj.calculateArea(); } public void calculateArea() { System.out.println('Area is ' + (obj.b * obj.b)); } }