Quina diferència hi ha entre la classe abstracta i la interfície a Java?



Aquest article us ajudarà a comprendre la diferència clau entre la classe abstracta i la interfície a Java amb l'ajuda d'un programa d'exemple.

Les classes abstractes i les interfícies són els dos blocs principalsdel . Tot i que tots dos s’utilitzen principalment per a l’abstracció, són molt diferents entre si i no es poden utilitzar indistintament. En aquest article esbrinem quina és la diferència entre la classe abstracta i la interfície a Java.

Els temes tractats en aquest article són els següents:





Comprendre les diferències entre classe abstracta i interfície a , heu de saber què és una classe abstracta i què és una interfície. Comencem doncs, parlant de què són.

transformació activa i passiva en informàtica

Què és la classe abstracta a Java?

En qualsevol llenguatge de programació, abstracció significa ocultar a l'usuari els detalls irrellevants per centrar-se només en els detalls essencials per augmentar l'eficiència, reduint la complexitat. A Java, l'abstracció s'aconsegueix utilitzant classes abstractes . Una classe abstracta capta característiques comunes de subclasses i pot contenir o no cap mètode abstracte. No es pot crear una instància, però només es pot utilitzar com a superclasse per les seves subclases. Aquí teniu un exemple de programa que demostra la classe abstracta:



Nota: An mètode abstracte , és un mètode que no s'implementa al lloc i que s'afegeixincompletesa a classe .

package MyPackage // abstract class abstract class Animal {String AnimalName = '' Animal (nom de la cadena) {this.AnimalName = name} // declara mètodes no abstractes // té implementació predeterminada public void BasicInfo (detalls de la cadena) {System. out.println (this.AnimalName + '' + details)} // mètodes abstractes que seran // implementats per la seva subclasse abstract public void habitat () abstract public void respiration ()} classe Terrestre extends Animal {// constructor Terrestre (nom de la cadena) {super (name)} @Override public void habitat () {System.out.println ('leave on land and')} @Override public void respiration () {System.out.println ('respire a través de pulmons o tràquea. ')}} classe Aquatic extends Animal {// constructor Aquatic (nom de la cadena) {super (name)} @Override public void habitat () {System.out.println (' Es deixa a l'aigua i ') } @Override public void respiration () {System.out.println ('respire through brànquies o la seva pell.')}} Classe AbstractClassDemo {public static voi d main (String [] args) {// creant l’objecte de la classe Terrestre // i utilitzant la referència de la classe Animal. Animal object1 = new Terrestrial ('Humans') object1.BasicInfo ('són éssers terrestres, ells') object1.habitat () object1.respiration () System.out.println ('') // creant els objectes de la classe de cercle Animal object2 = new Aquatic ('Peixos') object2.BasicInfo ('són éssers aquàtics, ells') object2.habitat () object2.respiration ()}}

Sortida

Els humans som éssers terrestres, surten a la terra i respiren per pulmons o tràquea. Els peixos són éssers aquàtics, deixen a l’aigua i respiren per brànquies o per la seva pell.

El Informació bàsica () és un mètode compartit per Terrestre i Aquàtic classes. Des de Classe animal no es pot iniciar, estem creant els objectes de Terrestre i Aquàtic classes amb finalitats de programació. A continuació, tenim interfícies.



Interfície en Java

Una altra forma d'aconseguir abstracció a Java es fa mitjançant interfícies .Una interfície és una col·lecció de mètodes abstractes, que no té cap concret , a diferència d’una classe abstracta. Però, a diferència de la classe abstracta, una interfície proporciona una abstracció completa a Java. Pot tenir tant mètodes com variables com una classe. No obstant això, els mètodes declarats en una interfície són abstractes per defecte.Aquí hi ha un demostrant classe abstracta:

package Interfície MyPackage Animals {// mètodes abstractes void habitat () void respiration ()} classe TerrestrialA implementa Animals {String AnimalName = '' // constructor TerrestrialA (nom de la cadena) {this.AnimalName = name} @Override public void habitat () {System.out.println (this.AnimalName + 'leave on land and')} @Override respiració del buit públic () {System.out.println ('respira a través de pulmons o tràquea.')}} Classe AquaticA implementa Animals {String AnimalName = '' // constructor AquaticA (nom de la cadena) {this.AnimalName = name} @Override public void habitat () {System.out.println (this.AnimalName + 'leave in water and')} @Override public void respiration () {System.out.println ('respire through brànquies o la seva pell.')}} Classe JavaInterfaceDemo {public static void main (String [] args) {// creant l'objecte de la classe terrestre // i utilitzant la referència de classe Animal . Animals object1 = new TerrestrialA ('Humans') object1.habitat () object1.respiration () System.out.println ('') // creant els objectes de la classe del cercle Animals object2 = new AquaticA ('Fishes') object2.habitat () object2.respiration ()}}

Sortida

Els humans marxen a terra i respiren per pulmons o tràquea. Els peixos surten a l’aigua i respiren per brànquies o per la seva pell.

Si no teniu cap codi comú entre el vostre classes , llavors podeu anar a la interfície. Una interfície s’assembla més a un pla d’una classe ja que no té cap mètode no abstracte.

Pel contingut anterior, és possible que hagueu notat la diferència clau entre la classe abstracta i la interfície a . La qual cosa, a diferència de la classe abstracta, proporciona una interfície completa abstracció a Java. Ara anem endavant i enumerem altres diferències.

Resum Classe vs Interfície

La taula següent mostra les diferències clau entre la classe abstracta i la interfície.

Paràmetre Classe de Resum Interfície

Implementació del mètode per defecte

Pot tenir la implementació del mètode per defecte

Les interfícies proporcionen una abstracció pura i no poden tenir cap implementació

variables

Pot contenir variables no finals.

Les variables declarades en una interfície són per defecte finals

quins són els casos a Java

Paraula clau utilitzada

Es pot ampliar una classe abstracta mitjançant la paraula clau “extends

La interfície s'ha d'implementar mitjançant implementacions de paraules clau

Modificadors d'accés

Llaunatenen modificador públic, protegit, privat i predeterminat

Els mètodes d'interfície són públics per defecte. no podeu utilitzar cap altre modificador d'accés amb ell

Velocitat d'implementació

És més ràpid que la interfície

Una interfície és una mica més lenta i requereix una indirecta addicional

Classe normal

Només pot ampliar una classe abstracta

c vs c ++ vs java

Pot implementar diverses interfícies

Constructors

Una classe abstracta pot tenir constructors

Una interfície no pot tenir constructors

Herència múltiple

Una classe abstracta pot ampliar una altra classe i pot implementar diverses interfícies Java

La interfície només pot ampliar una altra interfície Java

Bé, ara teniu les diferències clau entre la classe abstracta i la interfície a Java. Però, com decidiu quan feu servir quin d'entre aquests dos?

Quan s'utilitza la classe abstracta i quan s'utilitza la interfície?

Penseu a utilitzar classes abstractes en els casos següents:

  • Si teniu algunes classes relacionades que han de compartir el fitxer mateixes línies de codi
  • Quan vulgueu definir el fitxer camps no estàtics o no finals
  • Quan n’hi hamètodes o campso requereixen modificadors d’accés que no sigui públic (com ara protegit i privat)

Penseu a utilitzar interfícies en els casos següents:

  • Quan es vol aconseguir pura abstracció
  • Si vols contractar múltiple , és a dir,implementar més d’una interfície
  • Quan vulgueu especificar el comportament d'un tipus de dades concret, però no us preocupa qui implementa el seu comportament.

Això ens porta al final d’aquest article. He tractat una de les preguntes més freqüents sobre Java a Entrevista, que és la diferència entre la classe abstracta i la interfície de Java.

Assegureu-vos de practicar el màxim possible i de recuperar la vostra experiència.

Consulteu el per Edureka, una empresa d'aprenentatge en línia de confiança amb una xarxa de més de 250.000 estudiants satisfets repartits per tot el món. Estem aquí per ajudar-vos en cada pas del vostre viatge, per convertir-vos en una pregunta a part d’aquestes entrevistes java, oferim un pla d’estudis dissenyat per a estudiants i professionals que vulguin ser desenvolupador de Java.

Tens alguna pregunta? Si us plau, mencioneu-lo a la secció de comentaris d'aquesta 'interfície de mapa java' article i ens posarem en contacte amb vostè el més aviat possible.